当您将方法用作布尔值时,是否有一个typescript esint规则会提醒您



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

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

而不是

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

假设typescript esint是类型感知的,是否有规则可以检测这种用法?我会说99/100次,我并没有试图将该方法用作布尔值。

如果启用typescript的strictNullChecks编译器选项(或catch-allstrict编译器选项(,TS将自动为您执行此特定检查!

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

否则,正如评论中提到的@x4rf41,你可以使用linter来捕获它。
有两个typescript esint规则可以在这里帮助你:

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

最新更新