鉴于我有这个界面:
export class interface State {
default(): void;
}
这个抽象类:
export abstract class BaseState implements State {}
typescript编译器告诉我" BaseState错误地实现了接口状态" - 但这对我没有意义。如果抽象类实现了一个接口,那么它就不应该被强制实现它的所有方法,因为它也可以被委托给子类。
我知道我能做到
export abstract class BaseState implements State {
abstract default(): void;
}
但这绝对不是干的。那么,有没有什么理由在TypeScript中出现这种行为?
答案 0 :(得分:0)
因为TypeScript是结构化类型的,所以添加implements
语句的唯一原因是要发出警告,忘记从界面实现方法。
如果您不想收到相关警告,可以直接省略implements State
注释。
示例...我正在使用Example
界面来确保传递给我的usesExample
的对象是可以接受的...我始终保持类型安全,而且我不需要在我的抽象类上放置method
的抽象实现。
我可以(可选)将Example
接口添加到SubExample
,如果我想告诉我是否忘记添加内容......但使用usesExample
的行无论如何都会这样做
interface Example {
method(): string;
}
abstract class BaseExample {
abstract foo(): string;
}
class SubExample extends BaseExample {
foo() {
return '';
}
method() {
return '';
}
}
function usesExample(example: Example) {
return example.method();
}
usesExample(new SubExample());