javascript - Doğru/yanlış mantıksal operatörünün sayılara uygulanmadığını kontrol eden ESLint veya TSLint kuralı var mı?


Bugün değişkenim 0 olduğu için bir fonksiyon çağrısını beklenmedik şekilde atlattığım bir hata yaşadım:

const foo: number | undefined = getFoo();
if(foo) {
   // Will not be called if foo is zero
   doSomething(foo);
}

Bu, bir değişkenin tanımlı olup olmadığını test etmek için sıkça kullandığım bir kalıp. Bu her şeyle çalışır, nesneler, diziler, stringler... Sayılar hariç.
Daha önce böyle bir hata aldığım ilk sefer değil.

Beni uyaran bir kural var mı, şöyle bir şey:

if(foo)
   --- Warning, testing a number variable that can be defined, but equals to zero

Beni yazmaya zorlayacak bir şey:

if(foo !== undefined)

Daha az güzel, ama en azından doğru davranışı var.

Düzenle: bunu düşündükten sonra, aynı problemin string türü ve "" (boş string) değeri ile de ortaya çıkabileceği görülüyor

Cevap #1

tslint sıkı boolean ifadelerine sahiptir.

Cevap #2

Typescript ESLint için (TSLint kullanımdan kaldırıldığı için), Zbigniew Zagórski'nin diğer cevabında belirtilen aynı isimde bir kural var: strict-boolean-expressions

İlgili makaleler