规则建议:如果可以推断出上游返回类型,则防止明示的`:布尔 ' 返回类型注解
作者: bradzacher创建于 2024年8月9日更新于 2026年9月16日
标签package: eslint-pluginenhancement: new plugin ruleaccepting prs
在您提交提案前, 请确认您已经完成以下任务...
我的建议适合这个项目
- 我的建议特别检查TypeScript语法, 或者它建议检查需要类型信息准确。
- 我的提议不是“格式化规则”;意思是它不仅执行代码格式化(白空间、套接字等)。
- 我认为我的建议对更广泛的TypeScript社区(这意味着这不是一个合适的建议)是有用的。
说明
TS 5.5介绍 引出型号预测. TS 将尝试推断一个上游返回类型,如果:
- 该函数没有明确的返回类型或类型上游注释。
- 该函数有一个返回单语句,没有隐含返回.
- 该函数不改变其参数。
- 函数返回一个布尔表达式,该表达式与参数的改进相关。
第一点是踢球手——很多人(我们包括)明确地对返回类型进行注释。 否则他们会给自己做笔记
我们应该引入一条规则,警告:
- 函数符合其他3个条件
- 函数有明确的返回类型
这使得人们可以依靠TS的推论来获得更安全的代码——明确类型的上位词非常不健全! TS只执行上游可以被指定给变量的原始类型——而不是上游是正确的.
例如, 此代码是 TS 有效的, 但它是 WILDLY 错误的, 在运行时崩溃 :
const x = [1, 2, 无效]. filter (( (x): x 为 数字 = x x x = 无效);
失败案件
```8ZZ
const x = [1, 2, 无效]. filter( ((x): bolean => x!= 无效);传球
const x = [1, 2, 无效]. filter(x ××!= 无效);
//也许可以想象允许这样?
/ 默认推断上游可能更好, 因为它更安全
const x = [1, 2, 无效]. filter( ((x): x 为 NonNullable <typeof x > * * * * x!=无效);+++ 额外信息
无回复( N)
内容来源: typescript-eslint/typescript-eslint