Utility Type NonNullable<T> используется для исключения null и undefined из типа. Это полезно, когда мы хотим гарантировать, что переменная точно содержит значение.
Пример использования: если у вас есть тип string | null | undefined, применение NonNullable превратит его просто в string. Это повышает безопасность кода, убирая необходимость постоянных проверок на существование значения в тех местах, где мы уверены в данных.
В этом уроке мы потренируемся «очищать» типы от пустых значений.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- Модуль 10: Type Aliases
- Модуль 11: Интерфейсы
- Модуль 12: Type Guards и Narrowing
- Модуль 13: Enums
- Модуль 14: Классы
- Модуль 15: Generics — основы
- Модуль 16: Generics — ограничения
- Модуль 17: Utility Types — базовые
- Модуль 18: Utility Types — работа с Union
- Модуль 19: Utility Types — функции
- Модуль 20: Type Assertions
- Модуль 21: Keyof и Typeof операторы
- Модуль 22: Mapped Types
- Модуль 23: Conditional Types
- Модуль 24: Discriminated Unions
- Модуль 25: Модули и типы
- Модуль 26: Declaration Files
- Модуль 27: Типизация асинхронного кода
- Модуль 28: Практические паттерны
1. Что останется?
В TypeScript существует utility тип NonNullable
type T = string | number | null | undefined;
// Чему равен NonNullable<T>?2. Применение утилиты
Дополните фрагмент кода на TypeScript, чтобы функция `getLength` принимала только существующие значения (исключая `null` и `undefined`). Используйте утилиту `NonNullable` для оборачивания типа параметра функции. Заполните пропуски так, чтобы код компилировался без ошибок и корректно возвращал длину строки.
function getLength(str: input1S<input2S>) {
return str.length;
}
const result = getLength("hello");3. До и После
Перед вами список типов TypeScript. Распределите их по двум категориям: «Совместим с NonNullable» и «Не совместим». Тип считается совместимым, если NonNullable
stringnumber | nullundefinedbooleanstring | undefined{ a: number }4. Очистка массива
В данном задании представлена функция, которая фильтрует массив, удаляя значения null и undefined. Вам необходимо заполнить пропуски в коде, выбрав правильные типы из выпадающего списка, чтобы корректно использовать утилиту NonNullable для указания типа возвращаемого значения. Обратите внимание на синтаксис TypeScript и то, как NonNullable преобразует объединённые типы.
function filterNonNull<T>(arr: (T | null | undefined)[]): input1S {
return arr.filter((item): item is input2S => item != null);
}
const mixedArray = [1, null, 2, undefined, 3];
const filteredArray = filterNonNull(mixedArray); // тип: number[]5. Присвоение null
В этом фрагменте TypeScript-кода переменная объявлена с типом NonNullable, который исключает null и undefined. Однако ей пытаются присвоить значение null, что противоречит типу. Найдите строку с ошибкой и исправьте её, заменив null на допустимое строковое значение, чтобы код стал корректным.
let userName: NonNullable<string>;userName = null;console.log(userName);6. Типизация пропсов
Из предложенных строк соберите корректное определение типа Props на TypeScript, где поле description очищается от undefined с помощью NonNullable. Убедитесь, что тип корректно объявлен и использует утилитарный тип NonNullable для указанного поля. Некоторые строки являются лишними и не должны входить в решение.
type Props = { name: string; description: string | undefined; description: NonNullable<string | undefined>; age: number;};interface Props {