TypeScriptTypy narzędziowe
NonNullable<Type>
Usuwa z typu null i undefined.
Przykład
#TypeScript
interface Profile {
name: string
avatar?: string | null
}
type Avatar = NonNullable<Profile['avatar']>
// type Avatar = string
const avatars = [null, 'ania.webp', undefined, 'kuba.webp']
const present = avatars.filter((a): a is Avatar => a != null)
console.log(present)Wynik
['ania.webp', 'kuba.webp']
Definicja i zastosowanie
#NonNullable<Type> zwraca typ bez null i undefined. Dla string | null | undefined wynikiem jest string.
Przydaje się przy typach wyprowadzonych z innych typów, na przykład z opcjonalnego pola (NonNullable<User["avatar"]>) albo z wyniku funkcji, która czasem zwraca null.
Nie sprawdza niczego w działającym programie. Żeby wartość rzeczywiście nie była pusta, nadal potrzebne jest zawężenie, np. filtrowanie tablicy.
Składnia
#Składnia
type Nowy = NonNullable<Typ>Parametry typu
#Type
dowolny typ
Typ, z którego usuwasz null i undefined.
Dobre praktyki
#- Porównanie
a != null(z pojedynczym=) odrzuca jednocześnienulliundefined. - Od TypeScriptu 5.5 filtr
a => a != nullsam zawęża typ tablicy, bez jawnego predykatu.
Powiązane hasła
#- null i undefinedTypy oznaczające brak wartości, kontrolowane przez strictNullChecks.
- Exclude<UnionType, ExcludedMembers>Usuwa z unii typy zgodne z podanym typem.
- Asercja non-null (!)Wykrzyknik po wyrażeniu usuwa z typu null i undefined bez sprawdzania.
- Strażnicy typów (value is T)Własne funkcje sprawdzające, które zawężają typ w miejscu wywołania.
Widzisz błąd albo brakuje przykładu? Napisz do nas.