Skip to main content
Практика завдань

Що таке маповані типи в 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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань