当您将方法用作布尔值时,是否存在打字稿保留规则会提醒您?

时间:2020-07-10 02:24:56

标签: typescript eslint typescript-eslint

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

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

代替

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

鉴于typescript-eslint是typeaware的,是否存在检测此用法的规则?我要说的是99/100次,我不是想将这种方法用作布尔值。

1 个答案:

答案 0 :(得分:1)

如果您打开打字稿的strictNullChecks编译器选项(或全部使用的strict编译器选项),TS将自动为您执行此特定检查!

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

否则,如注释中提到的@ x4rf41一样,您可以使用短绒棉毛来抓它。
有两种打字稿保留规则,可以在这里为您提供帮助:

  • no-unnecessary-condition将确保实际上满足您的所有条件(即,由于该函数不可为空,因此将捕获这种情况)。
  • strict-boolean-expressions将确保您的所有if条件均为布尔值(即,由于该函数不是布尔值,因此将捕获这种情况)。