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.