TypeScript 编译器提供
noImplicitOverride
设置,如果设置为 true
,则在覆盖非抽象成员时将强制使用 override
关键字。例如:
abstract class A {
public doSomething(): void {
}
}
class B extends A {
public doSomething(): void { // TS4114
}
}
只有将有问题的行改为
public override doSomething(): void {
,编译器才会满意。太棒了!
但是,当继承的方法恰好是抽象方法时,情况就不一样了:
abstract class A {
public abstract doSomething(): void;
}
class B extends A {
public doSomething(): void { // no error
}
}
TS 编译器选项中是否也有任何晦涩的方法来强制使用
override
关键字?或者,我找不到任何 TypeScript-ESLint 规则来强制执行此操作,或者有吗?
直接回答问题:没有。从 TypeScript 5.3 或 typescript-eslint 6.18.1 开始,无法在实现
override
类方法时强制使用 abstract
关键字。
如果您希望存在此功能,有以下几种选择:
如果您不想再等 1.5 年,我会推荐最后一个。 🙂