首页 > 解决方案 > 当您将方法用作布尔值时,是否有一个 typescript-eslint 规则会提醒您?

问题描述

在 Javascript 中,我有时会不小心写到:

if (obj.method) {  // <-- bad
  ...
}

代替

if (obj.method()) { // <-- good
  ...
}

鉴于 typescript-eslint 是类型感知的,是否有检测这种用法的规则?我会说 99/100 次,我并不想将该方法用作布尔值。

标签: typescripteslinttypescript-eslint

解决方案


如果您打开 typescript 的strictNullChecks编译器选项(或包罗万象的编译strict器选项),TS 将自动为您执行此特定检查!

示例: https ://www.typescriptlang.org/play/#code/CYUwxgNghgTiAEYD2A7AzgF3kgRgKwC54BveAWxAwAslgAKASiJySQhChXgF8AoXgJYAzeHVx4AdBWq0GJXvEXxe3IA

否则,正如评论中提到的@x4rf41,您可以使用 linter 来捕捉它。
有两个 typescript-eslint 规则可以帮助你:

  • no-unnecessary-condition将确保您的所有条件都是实际需要的(即它会捕获这种情况,因为该函数不可为空)。
  • strict-boolean-expressions将确保您的所有if条件都是布尔值(即它会捕获这种情况,因为该函数不是布尔值)。

推荐阅读