Javascript 是否有ESLint或TSLint规则检查truthy/falsy逻辑运算符未应用于数字?

Javascript 是否有ESLint或TSLint规则检查truthy/falsy逻辑运算符未应用于数字?,javascript,typescript,numbers,eslint,lint,Javascript,Typescript,Numbers,Eslint,Lint,我今天遇到了一个错误,我意外地跳过了对函数的调用,因为我的变量是0: const foo: number | undefined = getFoo(); if(foo) { // Will not be called if foo is zero doSomething(foo); } 这是我经常使用的模式,测试是否定义了变量。这适用于所有对象、数组、字符串。。。除了号码。 这不是我第一次遇到这样的错误 有没有一条规则可以提醒我,比如: if(foo) --- Warning

我今天遇到了一个错误,我意外地跳过了对函数的调用,因为我的变量是0:

const foo: number | undefined = getFoo();
if(foo) {
   // Will not be called if foo is zero
   doSomething(foo);
}
这是我经常使用的模式,测试是否定义了变量。这适用于所有对象、数组、字符串。。。除了号码。
这不是我第一次遇到这样的错误

有没有一条规则可以提醒我,比如:

if(foo)
   --- Warning, testing a number variable that can be defined, but equals to zero
这会迫使我写:

if(foo !== undefined)
它不那么漂亮,但至少它有正确的行为


编辑:考虑到这一点后,类型
字符串
和值
“”
(空字符串)

tslint
出现了相同的问题。

对于Typescript ESLint(因为tslint已被弃用),有一条与另一个答案中提到的同名的规则:

你关心的情况是否只在
if
中,就像上面的代码一样?我不确定我是否完全理解你的问题,但是是的,通常我只想在
if
中提醒我。这看起来并不太复杂,但是TSLint很快就要崩溃了,我从来没有在ESLint上工作过,我不知道代码与TSLint相比如何(至少我对代码了解一点),我不认为ESLint会提供类型信息(如果TSLint有),所以它会相当复杂。您可能必须创建自己的规则。请参阅编写自己的ESLint规则。