1.7 KiB
1.7 KiB
sidebar_position
| sidebar_position |
|---|
| 6 |
Mapped types
Mapped Types в TypeScript позволяют создавать новые типы на основе существующих, применяя преобразования к каждому свойству.
🚀Mapped Types помогают гибко манипулировать типами, уменьшая дублирование кода.
Основные возможности:
-
Итерация по ключам
Можно перебрать ключи одного типа (keyof) и создать новый:type Optional<T> = { [K in keyof T]?: T[K] };Это сделает все свойства
Tнеобязательными. -
Модификаторы (
readonly,?)
Можно добавлять или удалять модификаторы:type Readonly<T> = { readonly [K in keyof T]: T[K] }; type Mutable<T> = { -readonly [K in keyof T]: T[K] }; // Удаляет `readonly` -
Фильтрация ключей
Черезasв TypeScript 4.1+ можно фильтровать или преобразовывать ключи:type OnlyStrings<T> = { [K in keyof T as T[K] extends string ? K : never]: T[K] };
Примеры встроенных mapped types:
Partial<T>– все свойства необязательные.Required<T>– все свойства обязательные.Pick<T, K>– выбирает только указанные ключиKизT.Record<K, V>– создаёт тип с ключамиKи значениямиV.