allowUnusedLabels
Etykieta, do której nic nie skacze
Nieużywana etykieta zwykle wcale nie jest etykietą — to literał obiektu albo adnotacja typu, które się tak sparsowały.
- Od
- TypeScript 1.8
- strict
- Poza strict
- W twoim tsconfigu
"allowUnusedLabels": false
Ten sam fragment za każdym razem. Zmieniła się tylko opcja.
Z wyłączoną
"allowUnusedLabels": trueexport function run() { outer: for (const x of [1]) { return x } return 0 }
Kompiluje się czysto
Z włączoną
"allowUnusedLabels": falseexport function run() { outer: for (const x of [1]) { return x } return 0 }
Zgłasza TS7028
Dlaczego kompilator się tym przejmuje
Etykiety są w nowoczesnym JavaScripcie na tyle rzadkie, że nieużywana jest lepszym dowodem literówki niż pętli. `{ foo: 1 }` napisane tam, gdzie spodziewana była instrukcja, parsuje się jako wyrażenie etykietowane, a nie obiekt; zabłąkane `x: string` w ciele funkcji robi to samo — oba kompilują się bez słowa i nic nie robią. Podobnie jak przy `allowUnreachableCode`, użytecznym ustawieniem jest jawne `false`, a nie domyślny brak wartości.
Wniosek
Jeśli nie chciałeś napisać etykiety, to ta flaga powie ci, że jednak ją napisałeś.
Gdzie iść dalej
Opcji: 22

