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