Что делают Partial, Required, Readonly и Pick в TypeScript?
Utility Types
Utility-типы — встроенные шаблоны, которые строят новые типы из существующих.
interface User {
id: number;
name: string;
email?: string;
}
type A = Partial<User>; // все поля необязательные
type B = Required<User>; // все поля обязательные, email тоже
type C = Readonly<User>; // поля нельзя менять
type D = Pick<User, 'id' | 'name'>; // только выбранные поляГде используют
Partial<T>— данные для обновления:updateUser(id, patch: Partial<User>).Readonly<T>— защита от случайных изменений состояния.Pick<T, K>— маленькие версии больших типов для компонентов и DTO.Required<T>— когда все поля после обработки заполнены.
Нюанс
Все они «мелкие»: работают только на верхнем уровне объекта. Для вложенных структур пишут рекурсивные варианты (DeepPartial).
Коротко для собеседования
Utility-типы избавляют от копирования интерфейсов: Partial делает поля необязательными, Readonly запрещает изменения, Pick берёт часть.