javascript - Angularjs 1.x 中的 Typescript 继承

标签 javascript angularjs inheritance typescript prototypal

我试图创建一个抽象类服务,其方法和属性可供其他服务在 Angularjs 中继承。使用 typescript 扩展方法将不起作用,或者如果做得正确的话我不会,所以尝试使用这种模式,但遗憾的是它也不起作用。 Typescript 不知道原型(prototype)继承中继承的方法。他们有任何解决方法或解决方案吗,谢谢您的帮助

抽象服务类的示例代码

'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

最佳答案

您的问题不太清楚,即使您回答了我的问题,我仍然不确定问题是什么。

我不是 Angular 开发人员,所以我无法回答 Angular 特定的问题,但随着继承进入 typescript ,这就是你的做法:

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);
}

如果您告诉我这有什么问题,那么我也许可以帮助您解决这个问题。

<小时/>

编辑

由于 Playground 网址对于评论来说太长,here it is .

关于javascript - Angularjs 1.x 中的 Typescript 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142477/

相关文章:

javascript - 为什么这个作用域属性在链接函数中不可用

Java子类构造函数不调用父类构造函数

javascript - FCKEditor:访问内容区域

javascript - 交叉口观察器在 600 像素视口(viewport) (+GSAP) 以下无法工作

javascript - Nodemailer:ERR_CONNECTION_RESET 与 AngularJS 和 NodeJS 与 POST

javascript - 在注册听众之前调用 AngularJS ng-init $broadcast

javascript - 如何使用 JavaScript 和 ExcelJS 检查不同工作表中的单元格值?

javascript - Angular UI-router 深度路由

c# - 通过转换 (ChildClass)parentObject 调用子构造函数;跟踪修订

java - 有没有办法在调用的时候不调用子类的方法?