TypeScript ESLint 是否存在可警告同名接口重复定义的规则
对应ESLint规则说明
TypeScript 原生支持接口声明合并特性,允许同一作用域下多次定义同名接口、最终自动合并所有成员。如果需要检测并警告这类重复定义同名接口的行为,可以直接使用 @typescript-eslint 插件集提供的对应规则,不需要额外自研规则。
- 规则选择:不要使用ESLint原生的
no-redeclare规则,该规则不识别TS语法,会出现误判或漏判。请使用@typescript-eslint/no-redeclare,这是专门适配TS语法的重复声明检测规则,默认就会把同作用域下的同名接口重复定义判定为违规。 - 配置方法:在ESLint配置文件中关闭原生规则,开启TS适配版本即可,示例配置如下:
{ "rules": { "no-redeclare": "off", "@typescript-eslint/no-redeclare": ["warn", { "ignoreDeclarationMerge": false }] } }
配置项说明:
ignoreDeclarationMerge默认值为false,此时所有同名接口、同名类型的重复声明都会触发警告;如果设置为true,规则会放行所有TS语法允许的声明合并场景(包括函数重载、命名空间和类的合并等),按需调整即可。
配置生效后,你给出的示例代码:
export interface Person { fullName: string; } export interface Person { name: string; }
会直接抛出警告,提示标识符Person重复定义。
如果需要更严格的类型定义规范,还可以搭配@typescript-eslint/consistent-type-definitions规则,统一项目内类型定义的写法风格,从根源减少零散的同名声明。
内容的提问来源于stack exchange,提问作者Kazuto_Ute
相关产品推荐
相关产品推荐

