Что такое Utility type?
Продвинутые темы
Utility Types — это встроенные обобщённые типы TypeScript, которые преобразуют существующие типы, избавляя от ручного дублирования описаний.
Частые utility types
- Partial<T> — все поля необязательные.
- Required<T> — все поля обязательные.
- Readonly<T> — все поля только для чтения.
- Pick<T, K> — выбрать подмножество полей.
- Omit<T, K> — исключить поля.
- Record<K, V> — объект с ключами
Kи значениямиV. - Partial/Exclude/Extract/ReturnType/Parameters — и другие.
interface User {
id: number;
name: string;
email: string;
}
type UserPreview = Pick<User, 'id' | 'name'>; // { id; name }
type UserPatch = Partial<User>; // все поля опциональны
type WithoutId = Omit<User, 'id'>; // без id
type Roles = Record<string, boolean>; // { [k: string]: boolean }Полезные для функций
type R = ReturnType<typeof fn>; // тип возврата
type P = Parameters<typeof fn>; // кортеж аргументовЗачем нужны
- DRY: не переписывать типы вручную.
- Гибкость: описать «этот тип, но частичный/без поля».
Коротко для собеседования
Utility Types — встроенные генерики TypeScript для трансформации типов: Partial, Required, Readonly, Pick, Omit, Record, ReturnType. Позволяют выводить новые типы из существующих без дублирования.