Что такое Mapped Types

Ответ

Mapped Types в TypeScript позволяют создавать новые типы на основе существующих, применяя преобразования к каждому свойству исходного типа. Они используют синтаксис [K in keyof T] для итерации по ключам типа.

Пример:

type Readonly<T> = {
    readonly [K in keyof T]: T[K];
};

interface Person {
    name: string;
    age: number;
}

type ReadonlyPerson = Readonly<Person>;
// Эквивалентно:
// {
//     readonly name: string;
//     readonly age: number;
// }

Также можно добавлять модификаторы (+, -) и фильтровать свойства:

type Optional<T> = {
    [K in keyof T]?: T[K];
};

type Required<T> = {
    [K in keyof T]-?: T[K];
};

Встроенные mapped types: Partial, Required, Readonly, Pick, Record.