intermediate
Utility и mapped types
Partial, Pick, Omit, Record, keyof, indexed access и mapped modifiers для object types.
Utility types трансформируют existing types без дублирования object shapes. `Pick` и `Omit` выбирают fields, `Partial` и `Required` меняют optionality, `Readonly` — assignment rules, `Record` создаёт keyed maps, mapped types обобщают это через `keyof` и indexed access.
type UserPatch = Partial<Pick<User, 'name' | 'email'>>;
type UserKeys = keyof User;
Derive, когда contracts действительно связаны. Over-derived types могут скрыть intent, если public API должен evolve independently.
На интервью: объясняйте на конкретном примере и называйте, что проверяют в production code.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и безопасностью или expressiveness и maintainability. Чеклист:
- Derive linked contracts.
- `keyof` осознанно.
- Именуйте важные transformed shapes.