Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    strictNullChecks

    null przestaje być w każdym typie

    Bez niej `null` i `undefined` należą do każdego typu, więc `string` po cichu znaczy „string albo zupełnie nic”.

    Od
    TypeScript 2.0
    strict
    W strict
    W twoim tsconfigu
    "strictNullChecks": true

    Ten sam fragment za każdym razem. Zmieniła się tylko opcja.

    Z wyłączoną

    "strictNullChecks": false
    export function len(s: string | null) {
      return s.length
    }

    Kompiluje się czysto

    Z włączoną

    "strictNullChecks": true
    export function len(s: string | null) {
      return s.length
    }

    Zgłasza TS18047

    Dlaczego kompilator się tym przejmuje

    To największa pojedyncza różnica semantyczna między dwiema konfiguracjami TypeScriptu i powód, dla którego typ przeniesiony z jednej bazy kodu może znaczyć coś innego w drugiej. Z wyłączoną flagą kompilator nie ma jak wyrazić „na pewno jest”, więc każda adnotacja jest półobietnicą. Z włączoną nieobecność staje się czymś, co się zapisuje — a każde miejsce, w którym stary kod o tym kłamał, zamienia się w błąd. Dlatego włączanie tego późno mierzy się w tygodniach, a nie w popołudniu.

    Wniosek

    Adnotacja bez tej flagi to sugestia. Z nią to twierdzenie.

    Gdzie iść dalej

    Opcji: 22