Typescript 摘要 class 没有实现没有错误

Typescript abstract class without implementation without errors

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

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

Typescript 将静态检查它并出错,因为它 return 不是声明的类型。

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

有没有办法防止打字稿这种检查和写?我的架构的很大一部分是 DI

的这个服务层系统

您需要将未实现的字段和方法标记为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

给你。

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

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

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