是否可以使用强类型公共方法但没有实现它们的抽象类? 我知道它是一个界面,但是我不能将依赖注入的接口用作Angular中的标记。我需要一个结构来实现我的其他类。 但是,如果我做这样的事情:
abstract class AbstractService {
someMethod(): Observable<SomeType> {}
}
Typescript会静态检查它并发生错误,因为它没有返回声明的类型。
我想我可以在编译器代码中添加一些注释以防止TS检查,但它看起来很糟糕。
有没有办法阻止打字稿这个检查并写下来?我的架构的一大部分是DI
的服务层系统答案 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>;
}
}