Files
frontend-docs/docs/typescript/06-mapped-types.md

1.7 KiB
Raw Blame History

sidebar_position
sidebar_position
6

Mapped types

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

🚀Mapped Types помогают гибко манипулировать типами, уменьшая дублирование кода.

Основные возможности:

  1. Итерация по ключам
    Можно перебрать ключи одного типа (keyof) и создать новый:

    type Optional<T> = { [K in keyof T]?: T[K] };
    

    Это сделает все свойства T необязательными.

  2. Модификаторы (readonly, ?)
    Можно добавлять или удалять модификаторы:

     type Readonly<T> = { readonly [K in keyof T]: T[K] };
     type Mutable<T> = { -readonly [K in keyof T]: T[K] }; // Удаляет `readonly`
    
  3. Фильтрация ключей
    Через 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.