TypeScriptTypy podstawowe
null i undefined
Typy oznaczające brak wartości, kontrolowane przez strictNullChecks.
Przykład
#TypeScript
function findUser(id: number): { name: string } | null {
return id === 1 ? { name: 'Ania' } : null
}
const user = findUser(2)
console.log(user?.name ?? 'Gość')
console.log(findUser(1)?.name)Wynik
Gość Ania
Definicja i zastosowanie
#W TypeScripcie null i undefined mają własne typy. Przy włączonej opcji strictNullChecks (część trybu strict) nie da się ich przypisać do zmiennej typu string czy number. Jeśli wartość może nie istnieć, trzeba to zapisać wprost: string | null.
Dzięki temu kompilator wymusza obsługę braku wartości. Zanim odczytasz właściwość, musisz sprawdzić, czy obiekt istnieje, albo użyć operatorów ?. i ??.
Konwencja w wielu projektach: undefined oznacza „nie ustawiono” (na przykład pominięte pole opcjonalne), a null oznacza „celowo pusto” (na przykład brak awatara).
Składnia
#Składnia
let wartosc: string | null = null
let opcjonalna: number | undefinedWięcej przykładów
#TypeScript
const avatar: string | null = null
console.log(avatar.length)
// Błąd: 'avatar' is possibly 'null'.Dobre praktyki
#- Trzymaj włączone
strictNullChecks. To jedna z najcenniejszych ochron przed błędami „cannot read properties of undefined”. - Operator
??zwraca prawą stronę tylko dlanulliundefined, nie dla0i pustego napisu.
Powiązane hasła
#- Pola opcjonalne (?)Właściwości, które mogą, ale nie muszą występować w obiekcie.
- Zawężanie typówUstalanie dokładniejszego typu wartości na podstawie sprawdzeń w kodzie.
- Asercja non-null (!)Wykrzyknik po wyrażeniu usuwa z typu null i undefined bez sprawdzania.
- "strictNullChecks"Traktuje null i undefined jako osobne typy, wymuszając ich obsługę.
Widzisz błąd albo brakuje przykładu? Napisz do nas.