规则建议:如果可以推断出上游返回类型,则防止明示的`:布尔 ' 返回类型注解

作者: 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!= 无效);

传球

9zz
const x = [1, 2, 无效]. filter(x ××!= 无效);

//也许可以想象允许这样?
/ 默认推断上游可能更好, 因为它更安全
const x = [1, 2, 无效]. filter( ((x): x 为 NonNullable <typeof x > * * * * x!=无效);

+++ 额外信息

无回复( N)

内容来源: typescript-eslint/typescript-eslint