Наследование машинописи в Angularjs 1.x
Пытаюсь сделать сервис абстрактного класса с методами и свойствами, которые другие сервисы могут наследовать n Angularjs. Использование метода машинописания расширений не будет работать или не будет, если я делаю это правильно, поэтому попытался использовать этот шаблон, но, к сожалению, он тоже не работал. Typescript не знает унаследованных методов от прототипного наследования. Есть ли какое-либо решение или решение этой проблемы, спасибо за помощь
пример кода для абстрактного класса обслуживания
'use strict';
namespace Data {
export interface IAbstractRepository {
sayHellow(): string;
}
class AbstractRepository implements IAbstractRepository{
static extend = function (repoCtor): void {
repoCtor.prototype = new AbstractRepository();
repoCtor.prototype.constructor = repoCtor;
};
sayHellow(): string {
return 'Hello world';
}
}
function factory(): IAbstractRepository {
return AbstractRepository;
}
angular.module('core').factory('AbstractRepository', factory);
}
и для вспомогательного класса обслуживания
'use strict';
namespace Data{
class BookRepository {
constructor(AbstractRepository) {
AbstractRepository.extend(this);
}
getAllBooks(): string {
// this shows as an error now it cant know that its inherited
return this.sayHellow();
}
}
factory.$inject = ['AbstractRepository'];
function factory(AbstractRepository): any {
return new BookRepository(AbstractRepository);
}
angular.module('core').factory('BookRepository', factory);
}
для решения, предложенного вниз флагами для JshintRC, чтобы подавить предупреждения, выданные Typescript "validthis": true и "shadow": "false
1 ответ
Ваш вопрос не так ясен, даже с комментарием, который вы ответили на мой вопрос, я все еще не уверен, в чем проблема.
Я не угловой разработчик, поэтому я не могу ответить на конкретные угловые вопросы, но, как наследование идет в машинописи, вот как вы это делаете:
namespace Data {
export interface IAbstractRepository {
sayHellow(): string;
}
abstract class AbstractRepository implements IAbstractRepository {
constructor() {}
sayHellow(): string {
return 'Hello world';
}
}
class BookRepository extends AbstractRepository {
constructor() {
super();
}
getAllBooks(): string {
return this.sayHellow();
}
}
angular.module("core").factory("BookRepository", BookRepository);
}
Если вы скажете мне, что с этим не так, тогда я смогу помочь вам решить это.
редактировать
Так как URL игровой площадки слишком длинный для комментариев, вот он.