Служебные типы
Вопрос
Какие служебные типы ты используешь чаще всего?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Partial и Required меняют обязательность полей
Pick и Omit выбирают или исключают поля
Record строит словарь по ключам
ReturnType и Parameters вытаскивают типы из функции
Awaited разворачивает промис
почти все они строятся из mapped-типов и conditional-типов
Что могут спросить следом
- Как написать свой Partial
- Чем Omit опасен при переименовании поля
- Как получить тип элемента массива
Разбор
Partial<T> делает поля необязательными (форма редактирования), Required -
наоборот. Pick<T, K> и Omit<T, K> формируют подмножество - это способ не таскать целую
сущность туда, где нужны два поля.
Record<K, V> строит словарь: Record<Status, string> заставит перечислить все статусы -
добавится новый, компилятор потребует подпись и для него.
ReturnType<typeof fn> и Parameters<typeof fn> вытаскивают типы из существующей функции,
Awaited<T> разворачивает промис - вместе они дают тип данных API прямо из типа клиента,
без дублирования.
Все они написаны на mapped- и conditional-типах, так что при необходимости такой же пишется руками.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.