typescript - Prečo TSLint a JSLint hlásia prázdne bloky?


Občas dostanem chyby TSLint „blok je prázdny“. Stáva sa to napríklad, keď funkcii odovzdám callback, ktorý nič nerobí:

doSomething(() => {});

Z toho, čo som čítal, JSLint zjavne robí to isté, ale ja som to neskontroloval.

Tieto použitia považujem za úplne platné, takže som sa snažil nájsť dôvod, prečo sa prázdne bloky považujú za zlé. Ale jediné, čo som schopný nájsť (napr. v tejto odpovedi), sú pokyny pridať return;, aby sa zabránilo chybe. Toto nie je to, čo chcem robiť v každom prázdnom spätnom volaní.

Prečo TSLint hlási vyššie uvedený prázdny blok ako problém? Existuje nejaký dôvod, prečo by som nemal vypnúť túto kontrolu?

Odpoveď č. 1

Prečo TSLint označuje vyššie uvedený prázdny blok ako problém

Aby sa predišlo chybám. Možno sa zabudlo vyplniť funkciu. Odporúča sa () => undefined ako noop.

Viac

Ak ho chcete zakázať, jednoducho pridajte "no-empty": false, do vášho tslint.json (globálne zakázať) alebo ho vypnite inline pomocou komentára /* tslint:disable:no-empty */.

Odpoveď č. 2

Ak máte pocit, že nechcete používať spätné volanie počas určitých scenárov, môžete upraviť kód

z

doSomething(() => {});

to

doSomething(() => undefined);

Nahradenie() => {} za toto naznačuje, že vám na tejto spätnévolávacej funkcii nezáleží. A explicitné typovanie sa vyhne dôsledkom.

Veľa šťastia.

Odpoveď č. 3

Spôsob, ako potlačiť chybu a označiť, že prázdny blok bol úmyselný, je dočasne vypnúť pravidlo:

// tslint:disable-next-line:no-empty
doSomething(() => {});

Alebo urobte to neprázdne:

doSomething(() => {/**/});

Odpoveď č. 4

Ako pri všetkých kontrolách, konečný súd o tom, či vám pomáhajú alebo nie, je vo vašich rukách. Túto kontrolu TSLint môžete vypnúť použitím jednej z nasledujúcich možností.

Vypnúť pravidlo v tslint.json

//...
"no-empty": false,
//...

Zakážte pravidlo v súbore:

/* tslint:disable:no-empty */

Vždy ho môžete znova zapnúť, ak v budúcnosti nájdete prázdny blok, ktorý vám spôsobil problém.

Súvisiace články