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": falseexport function len(s: string | null) { return s.length }
Kompiluje się czysto
Z włączoną
"strictNullChecks": trueexport 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

