Typescript抽象类没有实现没有错误

时间:2018-04-14 09:52:29

标签: angular class typescript abstract

是否可以使用强类型公共方法但没有实现它们的抽象类? 我知道它是一个界面,但是我不能将依赖注入的接口用作Angular中的标记。我需要一个结构来实现我的其他类。 但是,如果我做这样的事情:

abstract class AbstractService { someMethod(): Observable<SomeType> {} }

Typescript会静态检查它并发生错误,因为它没有返回声明的类型。

我想我可以在编译器代码中添加一些注释以防止TS检查,但它看起来很糟糕。

有没有办法阻止打字稿这个检查并写下来?我的架构的一大部分是DI

的服务层系统

2 个答案:

答案 0 :(得分:1)

您需要标记未实现为abstract

的字段和方法
abstract class AbstractService {
    abstract someMethod(): Observable<SomeType>
}

这也会强制实现类实际实现方法:

// Error: Non-abstract class 'Service' does not implement inherited abstract member 'someMethod' from class 'AbstractService'
class Service extends AbstractService{

}


 //ok, methods is implemented
class OkService extends AbstractService {
    someMethod() {
        throw new Error("Method not implemented.");
    }
}

您可以阅读有关抽象类here

的更多信息

答案 1 :(得分:0)

你在这里。

abstract class Base {
    public abstract hello(name: string): Promise<string>
    public abstract goodbye(name: string): Promise<string>
}

如果您需要测试新类,但尚未实现所有方法。

class Human extends Base {
    public hello(name: string) {
       // your implementation
    }
    public goodbye(name: string) {
        return 'Not implemented yet' as unknown as Promise<string>;
    }
}