TypeScript Academy · Урок

Переименование ключей с помощью as в отображаемых типах

Переименовывайте ключи во время преобразования типов

Урок 4 из 413 шагов

«Переименование ключей с помощью as в отображаемых типах» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

В TypeScript 4.1 в отображаемых типах появилось выражение `as`, позволяющее переназначать (переименовывать) ключи в процессе преобразования типа.

Базовое переназначение ключей

Добавьте `as NewKeyType` после переменной ключа, чтобы назначить ему новое имя.
type Prefixed<T> = {
  [K in keyof T as `prefix_${string & K}`]: T[K]
};
type P = Prefixed<{ name: string }>;
// { prefix_name: string }

Фильтрация ключей с помощью never

Верните `never` из предложения `as`, чтобы удалить этот ключ из результирующего типа.
type OnlyStrings<T> = {
  [K in keyof T as T[K] extends string ? K : never]: T[K]
};

Генерация имён методов получения

Используйте Capitalize с типами шаблонных литералов для генерации имён методов получения.
type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
};
type UserGetters = Getters<{ name: string; age: number }>;
// { getName: () => string; getAge: () => number }

Генерация имён методов установки

Аналогичным образом сгенерируйте имена методов установки для свойств типа.
type Setters<T> = {
  [K in keyof T as `set${Capitalize<string & K>}`]: (val: T[K]) => void
};

Инвертирование типа Record

Поменяйте местами ключи и значения с помощью переназначения ключей.
type Invert<T extends Record<string, string>> = {
  [K in keyof T as T[K]]: K
};

Условное переназначение ключей

Применяйте разные преобразования ключей в зависимости от типа значения.
type MethodKeys<T> = {
  [K in keyof T as T[K] extends Function ? K : never]: T[K]
};

Сочетание с шаблонными литералами

Используйте типы шаблонных литералов при переназначении, чтобы генерировать ключи с пространствами имён.
type Namespaced<T, NS extends string> = {
  [K in keyof T as `${NS}::${string & K}`]: T[K]
};

Сопоставление символьных ключей

С помощью переназначения ключей можно также работать с символьными ключами.

Практика: тип FormData

Выведите объект формы со строковыми значениями из типизированной модели данных.
type FormFields<T> = {
  [K in keyof T as K extends string ? K : never]: string
};

Сочетание as с условными типами

Переназначение ключей и условные типы объединяются, создавая выразительные преобразования типов.

Быстрая проверка

Что происходит с ключом, если вернуть `never` из предложения `as` в отображаемом типе?

Итоги

Предложение `as` в отображаемых типах позволяет переименовывать и фильтровать ключи (с помощью `never`), а также преобразовывать их с использованием шаблонных литералов и условных выражений. Это позволяет создавать такие мощные конструкции, как генерация методов получения и установки и фильтрация свойств по типу значения.
Можно начать бесплатно

Изучай TypeScript с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
101
Уроки
352

Часто задаваемые вопросы

Урок «Переименование ключей с помощью as в отображаемых типах» бесплатный?

Да — полный текст урока «Переименование ключей с помощью as в отображаемых типах» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переименование ключей с помощью as в отображаемых типах»?

Переименовывайте ключи во время преобразования типов Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Переименование ключей с помощью as в отображаемых типах»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Отображаемые типы: преобразование типов объектов
  2. Модификаторы в отображаемых типах: readonly и ?
  3. Типы шаблонных литералов: шаблоны строк
  4. Переименование ключей с помощью as в отображаемых типах
← Назад к TypeScript Academy