Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    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": true
    export function run() {
      outer: for (const x of [1]) {
        return x
      }
      return 0
    }

    Kompiluje się czysto

    Z włączoną

    "allowUnusedLabels": false
    export 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