Typescript + Angular 公开服务方法

Typescript + Angular expose service method

我在项目中使用 typescript 和 angular。当我想公开服务的方法时,我会执行以下操作:

export class MyService implements IService {

    //Public method
    public myMethod: Function;

    public constructor() {

        this.myMethod= this._myMethod;

    }

    private _myMethod(): void {
       //...
    }

当我处理获得许多方法的服务时,我不必滚动查看方法的定义,这太棒了。但是现在当我在另一个服务或控制器中使用我的服务方法时,我看不到我的方法的签名......所以我失去了打字稿的优势......

有什么想法吗?

谢谢。

简单的答案是您需要给函数定义一个签名

class MyService {
    public myMethod: () => void; //don't use Function

    constructor() {
        this.myMethod = this.myMethod;
    }

    _myMethod = () => {

    }

}

然而,更好的方法是定义一个接口:

interface IMyService extends IService {
    myMethod: () => void;
}

class MyService implements IMyService {
    constructor() {

    }

    myMethod = () => {

    }
}