Что такое mapped types в TypeScript?

Вопрос проверяет знание об одной из самых мощных функций TypeScript — отображаемых типах, которые позволяют создавать новые типы на основе существующих.

Короткий ответ

Mapped types позволяют изменять или трансформировать все свойства существующего типа. Это полезно для создания новых типов, которые немного отличаются от исходных, например, для того, чтобы сделать все свойства объекта обязательными или опциональными.

Длинный ответ

Отображаемые типы (Mapped types) позволяют вам брать существующий тип и применять к нему трансформации. Это может быть полезно для создания новых типов с измененными модификаторами (например, сделать все свойства readonly или опциональными). Они особенно эффективны в сочетании с ключевыми словами keyof и условными типами. Благодаря отображаемым типам, можно динамически изменять структуру объектов без необходимости вручную переписывать типы.

 

Пример:


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

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

const user: Readonly<User> = {
 name: 'John',
 age: 30,
};

user.name = 'Doe'; // ошибка: свойство `name` только для чтения

Здесь тип Readonly делает все свойства переданного объекта только для чтения.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • TypeScript

    TypeScript

Подпишись на React Developer в телеграм