Mapped type перебирает ключи типа и строит новые свойства. Pick ограничивает набор ключей, а Partial добавляет каждому свойству модификатор optional.
Реализуйте собственный утилитарный тип Pick<T, K>. Объясните, как работают mapped types и как реализовать аналог Partial<T>.
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 не позволяет выбрать отсутствующий ключ.