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

Łuk*_*ski 1 class abstract typescript angular

是否可以有一个具有强类型公共方法但没有实现它们的抽象类?我知道它是一个接口,但我不能将接口用于依赖注入作为 Angular 中的令牌。我需要一个结构供其他类实现。但是,如果我这样做:

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

Typescript 会静态地检查它并出错,因为它不返回声明的类型。

我想我可以在编译器代码中添加一些注释来防止 TS 检查,但这似乎很hacky。

有没有办法阻止 typescript 进行此检查并进行写入?我的架构的重要组成部分是用于 DI 的服务层系统

Tit*_*mir 5

您需要将未实现的字段和方法标记为abstract

abstract class AbstractService {
    abstract someMethod(): Observable<SomeType>
}
Run Code Online (Sandbox Code Playgroud)

这也将强制实现类实际实现这些方法:

// 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.");
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关抽象类的更多信息