You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

解答

TypeScript 编译器层面

截止当前最新稳定版,TypeScript 没有任何原生配置支持在实现抽象类/接口的抽象成员时,强制要求添加override关键字。
noImplicitOverride 在设计阶段就明确将抽象成员实现排除在检查范围外:TS 团队的设计逻辑是,实现抽象成员是子类必须履行的类型契约,和重写已有默认实现的父类成员语义有本质区别,因此一直未采纳社区提出的相关配置提案。
需要注意的是,在实现抽象成员时手动写override关键字是完全合法的,TS 不会对该写法抛出编译错误,示例如下:

abstract class A {
    public abstract doSomething(): void;
}

class B extends A {
    // 可正常编译通过
    public override doSomething(): void {}
}

TypeScript-ESLint 层面

官方维护的 @typescript-eslint/eslint-plugin 目前没有内置对应规则覆盖这个校验场景。如果需要强制要求抽象成员实现必须加override,可以通过两种方式实现:

  • 基于 ESLint 核心的 no-restricted-syntax 规则,自定义AST选择器匹配「实现父抽象成员但未添加override修饰符」的类成员,配置后即可实现自动校验。
  • 使用社区成熟的第三方ESLint插件提供的对应专用规则,开启后直接生效。

内容的提问来源于stack exchange,提问作者F-H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:15:35