重写抽象成员时如何强制使用 override 关键字?

问题描述 投票:0回答:1

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 polymorphism overriding abstract typescript-eslint
1个回答
0
投票

直接回答问题:没有。从 TypeScript 5.3 或 typescript-eslint 6.18.1 开始,无法在实现

override
类方法时强制使用
abstract
关键字。

如果您希望存在此功能,有以下几种选择:

如果您不想再等 1.5 年,我会推荐最后一个。 🙂

© www.soinside.com 2019 - 2024. All rights reserved.