Що робить NonNullable<T>?
Визначення
У стандартній бібліотеці він реалізований так:
javascript
type NonNullable<T> = T extends null | undefined ? never : T;Тобто: якщо T - null або undefined, результат never; інакше повертається сам T.
Приклади використання
javascript
type A = NonNullable<string | null | undefined>; // string
type B = NonNullable<number | undefined>; // number
type C = NonNullable<null | undefined>; // never
type D = NonNullable<string | null>; // stringПрактичне застосування
- Безпечне звернення до значень після перевірки:
javascript
function getLength(value: string | null) {
if (value) {
let safe: NonNullable<typeof value> = value; // тепер точно string
return safe.length;
}
return 0;
}- Типізація API-відповідей після фільтрації null:
javascript
const users = [ "Tom", null, "Bob" ];
const valid = users.filter(Boolean) as NonNullable<typeof users[number]>[];
// valid: string[]- У поєднанні з іншими utility-типами:
javascript
type User = { name?: string | null };
type SafeUser = NonNullable<User["name"]>; // stringКоротко
| Utility | Призначення |
|---|---|
NonNullable<T> | Прибирає null і undefined |
Partial<T> | Робить усі поля опціональними |
Required<T> | Робить усі поля обов'язковими |
Readonly<T> | Робить усі поля тільки для читання |
Extract<T, U> | Залишає перетин типів |
Exclude<T, U> | Прибирає перетин типів |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.