Реализуйте собственный утилитарный тип Pick<T, K>. Объясните, как работают mapped types и как реализовать аналог Partial<T>.

Mapped type перебирает ключи типа и строит новые свойства. Pick ограничивает набор ключей, а Partial добавляет каждому свойству модификатор optional.

Короткий ответ

Что ответить на собеседовании

Mapped type перебирает ключи типа и строит новые свойства. Pick ограничивает набор ключей, а Partial добавляет каждому свойству модификатор optional.

Подробный разбор

Ответ с пояснениями

Mapped type перебирает ключи типа и строит новые свойства. Pick ограничивает набор ключей, а Partial добавляет каждому свойству модификатор optional.

type MyPick<T, K extends keyof T> = {
  [P in K]: T[P];
};

type MyPartial<T> = {
  [P in keyof T]?: T[P];
};

Оба типа работают только на этапе проверки. MyPartial изменяет верхний уровень, не делая вложенные поля рекурсивно необязательными. Ограничение K не позволяет выбрать отсутствующий ключ.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее