Ответ вслух Junior Утилитарные типы обновлено

Служебные типы

Вопрос

Какие служебные типы ты используешь чаще всего?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Partial<T делает поля необязательными (форма редактирования), Required - наоборот. Pick<T, K и Omit<T, K формируют подмножество - это способ не таскать целую сущность туда, где нужны два поля.

Что должно прозвучать в ответе

  • 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 ошибок.