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

Angular 没有实现的Typescript抽象类没有错误,angular,class,typescript,abstract,Angular,Class,Typescript,Abstract,有没有可能有一个抽象类具有强类型的公共方法,但没有实现它们我知道它是一个接口,但我不能在Angular中使用依赖注入接口作为标记。我需要为我的其他类实现一个结构。 但是,如果我这样做: 抽象类抽象服务{ someMethod():可观察的{} } Typescript将对其进行静态检查并出错,因为它不返回声明的类型 我想我可以在编译器代码中添加一些注释,以防止TS检查,但它似乎有黑客行为 有没有办法防止打印此检查并执行写入操作?我的体系结构的一个重要部分是DI的服务层系统您需要将未实现为抽象的

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

抽象类抽象服务{
someMethod():可观察的{}
}

Typescript将对其进行静态检查并出错,因为它不返回声明的类型

我想我可以在编译器代码中添加一些注释,以防止TS检查,但它似乎有黑客行为


有没有办法防止打印此检查并执行写入操作?我的体系结构的一个重要部分是DI的服务层系统

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

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

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

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

abstract class AbstractService {
    abstract someMethod(): Observable<SomeType>
}
您可以阅读更多关于抽象类的内容

在这里

abstract class Base {
    public abstract hello(name: string): Promise<string>
    public abstract goodbye(name: string): Promise<string>
}
抽象类基类{
公共摘要hello(名称: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>;
    }
}
class人类扩展基础{
公共hello(名称:string){
//您的实现
}
公共再见(名称:string){
返回“尚未实施”作为未知的承诺;
}
}
给你

abstract class Base {
    public abstract hello(name: string): Promise<string>
    public abstract goodbye(name: string): Promise<string>
}
抽象类基类{
公共摘要hello(名称: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>;
    }
}
class人类扩展基础{
公共hello(名称:string){
//您的实现
}
公共再见(名称:string){
返回“尚未实施”作为未知的承诺;
}
}

正是我想要的,谢谢:)我使用
实现
,但是@ukaszOstrowski并不重要,
实现
扩展
将强制您实现类的所有方法,它们的语义略有不同。如果使用实现,派生类将不会真正继承抽象类,因此构造函数中的任何代码或任何方法在派生类中都不可用。另外,
instanceof AbstractService
对于此类classesTrue的实例将返回false。我使用抽象类只是因为Angular无法解析接口。这正是我想要的,谢谢:)并且我使用
实现
,但这并不重要@ukaszOstrowski,而
实现
扩展
将强制您实现类的所有方法,它们的语义略有不同。如果使用实现,派生类将不会真正继承抽象类,因此构造函数中的任何代码或任何方法在派生类中都不可用。另外,
instanceof AbstractService
对于此类classesTrue的实例将返回false。我使用抽象类只是因为Angular无法解析接口。