Що таке маповані типи в TypeScript
Mapped Types в TypeScript дозволяють створювати нові типи на основі існуючих шляхом ітерації по ключах та модифікації їх.
Це схоже на map() для типів — ви можете ітерувати по кожному ключу об'єкта та встановлювати потрібне значення для нього.
Синтаксис
typescript
type NewType = {
[Key in Union]: Type;
}Key— ім'я змінної, що представляє поточний ключ з наборуUnion.Type— тип значення для кожного ключа.- Можна використовувати
keyof, модифікатори (?,readonly) та утилітні типи (Pick,Partialтощо).
Приклади використання
Приклад 1: Копіювання типу з різними значеннями
ts
type User = {
name: string;
age: number;
};
// Створити тип, де всі значення є boolean
type UserPermissions = {
[K in keyof User]: boolean;
};
// => { name: boolean; age: boolean }Приклад 2: Усі поля необов'язкові (як Partial)
ts
type Optional<T> = {
[K in keyof T]?: T[K];
};Використання
ts
type User = { name: string; age: number };
type OptionalUser = Optional<User>;
// => { name?: string; age?: number }Приклад 3: Зробити всі поля тільки для читання (як Readonly)
ts
type ReadOnly<T> = {
readonly [K in keyof T]: T[K];
};Приклад 4: Видалити readonly
ts
type Mutable<T> = {
-readonly [K in keyof T]: T[K];
};Де використовуються Mapped Types
- При створенні утилітних типів (
Partial,Pick,Readonly,Recordтощо) - Для генерації динамічних об'єктів з попередньо визначеними ключами
- Для автоматичних перетворень типів на основі інших типів
- Для інтроспекції типів у великих проектах (особливо з
GraphQL,API, системами форм)
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.