在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
条件都是布尔值(即,它会捕获这种情况,因为函数不是布尔值(