Это инструменты типо-уровневого программирования TypeScript — они вычисляют новые типы из существующих.
Почему это важно
Mapped типы — трансформируют каждое свойство
Маппированный тип перебирает ключи типа и трансформирует каждый:
<T> = { [K keyof T]: T[K] };
<T> = { [K keyof T]?: T[K] };
{ : ; : ; }
= <>;
