为何TypeScript中const c的类型注解未触发ESLint no-inferrable-types警告?
关于@typescript-eslint/no-inferrable-types规则的疑问解答
为什么两种场景表现不同?
@typescript-eslint/no-inferrable-types规则的核心逻辑是只检测直接给字面量赋值时的冗余类型注解:- 写
const a: number = 22;时,TypeScript能直接从字面量22推断出类型为number,这里的类型注解完全多余,所以触发警告。 - 写
const c: number = a + b;时,赋值的是a + b表达式而非直接字面量。虽然最终TypeScript也能推断出结果是number,但规则认为这种场景下的注解不属于“可轻易判定的冗余”——表达式的类型推导需要依赖a、b的类型,比字面量推断多了一层逻辑,因此不会触发警告。
- 写
是否存在检测此场景的ESLint规则?
- 目前@typescript-eslint官方规则集里没有专门针对表达式赋值场景下冗余类型注解的检测规则。
- 如果确实需要这类检查,你可以自定义ESLint规则,或者寻找社区第三方规则,但第三方规则的可靠性和维护情况需要自行评估。
内容的提问来源于stack exchange,提问作者Greener
相关产品推荐
相关产品推荐

