typescript - TSLint ve JSLint neden boş bloklar bildiriyor?
Zaman zaman, TSLint hataları alıyorum "blok boş". Bu, örneğin, bir işlevine hiçbir işlem yapmayan bir geri çağırma geçtiğimde olur:
doSomething(() => {});
Okuduklarıma göre, JSLint görünüşe göre aynısını yapıyor, ama bunu doğrulamadım.
Bu kullanımları tamamen geçerli buluyorum, bu yüzden boş blokların neden kötü kabul edildiğini bulmaya çalıştım. Ama bulabildiğim tek şey (örneğin bu cevaptaki) hatayı önlemek için return; ekleme talimatları. Bu, her boş geri çağırmada yapmak istediğim şey değil.
TSLint neden yukarıdaki boş bloğu sorun olarak bildiriyor? Bu denetimi devre dışı bırakmamam için bir neden var mı?
Cevap #1
TSLint neden yukarıdaki boş bloğu sorun olarak bildiriyor
Hataları önlemek için. Belki fonksiyonun doldurulması unutulmuştur. Boş işlev (noop) olarak () => undefined önerilir.
Daha
Bunu devre dışı bırakmak isterseniz, tslint.json dosyanıza "no-empty": false, ekleyin (küresel olarak devre dışı bırakmak için) veya bir /* tslint:disable:no-empty */ yorumu kullanarak satır içinde devre dışı bırakın.
Cevap #2
Belirli senaryolarda geri aramayı kullanmak istemediğinizi düşünüyorsanız kodu değiştirebilirsiniz
den
doSomething(() => {});
için
doSomething(() => undefined);
Bunu() => {} ile değiştirmek, bu geri aramayı umursamadığınız anlamına gelir. ve açık tip dönüştürme sonucu engelleyecektir.
İyi şanslar.
Cevap #3
Hatanın bastırılması ve boş bloğun kasıtlı olduğunu belirtmenin bir yolu, kuralı geçici olarak devre dışı bırakmaktır:
// tslint:disable-next-line:no-empty
doSomething(() => {});
Ya da onu boş olmayan yap:
doSomething(() => {/**/});
Cevap #4
Tüm kontrollerde olduğu gibi, size yardımcı olup olmadıkları konusunda nihai yargı sizin olacaktır. Bu TSLint kontrolünü aşağıdaki seçeneklerden biriyle kapatabilirsiniz.
tslint.json dosyasında kuralı devre dışı bırak
//...
"no-empty": false,
//...
Dosyadaki kuralı devre dışı bırak:
/* tslint:disable:no-empty */
Gelecekte size sorun yaratan boş bir blok bulursanız, her zaman tekrar açabilirsiniz.
