0Pricing
TypeScript Academy · Урок

Record: сопоставление ключей с типами значений

Создавайте типы, похожие на словари, с помощью Record

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

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

Record создаёт тип объекта с определёнными ключами K и единообразным типом значений V. Он избавляет от необходимости вручную указывать каждый ключ в структурах, похожих на словари.

Базовый синтаксис Record

Передайте в Record тип ключей и тип значений.
type Roles = Record<'admin' | 'user' | 'guest', boolean>;
const access: Roles = { admin: true, user: true, guest: false };

Record со строковыми ключами

Используйте `string` как тип ключей для общего словаря.
const headers: Record<string, string> = {
  'content-type': 'application/json',
  'authorization': 'Bearer token'
};

Record для таблиц поиска

Record идеально подходит для таблиц поиска, в которых идентификаторы или коды сопоставляются со значениями.
const statusLabels: Record<number, string> = {
  200: 'OK',
  404: 'Not Found',
  500: 'Server Error'
};

Как реализован Record

Record — это отображаемый тип над объединением ключей.
type Record<K extends string | number | symbol, V> = { [P in K]: V };

Record и сигнатура индекса

Record эквивалентен `{ [key: string]: V }`, но он более читабелен и удобнее для составления.
// Equivalent:
type A = Record<string, number>;
type B = { [key: string]: number };

Record с объединением значений

Тип значений может быть объединением или сложным типом.
type Config = Record<'development' | 'staging' | 'production', { url: string; debug: boolean }>;

Частичный Record

Объедините Record с Partial, чтобы разрешить отсутствие некоторых ключей.
type OptionalConfig = Partial<Record<'debug' | 'verbose' | 'trace', boolean>>;

Только для чтения Record

Объедините Record с Readonly, чтобы запретить изменения.
const CODES: Readonly<Record<string, number>> = { A: 1, B: 2 };

Record для группировки

Используйте Record, чтобы группировать элементы по ключу категории.
function groupBy<T>(items: T[], key: keyof T): Record<string, T[]> {
  return items.reduce((acc, item) => {
    const k = String(item[key]);
    (acc[k] ??= []).push(item);
    return acc;
  }, {} as Record<string, T[]>);
}

Record с ключами перечисления

Значения перечисления можно использовать как ключи Record.
enum Color { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' }
const hexCodes: Record<Color, string> = {
  [Color.Red]: '#FF0000',
  [Color.Green]: '#00FF00',
  [Color.Blue]: '#0000FF',
};

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

Что создаёт `Record<'a' | 'b', number>`?

Итоги

Record создаёт типизированный словарь с определёнными ключами и единообразными типами значений. Используйте его для таблиц поиска, карт конфигурации и результатов groupBy. Для дополнительного контроля объединяйте его с Partial и Readonly.

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

Урок «Record: сопоставление ключей с типами значений» бесплатный?

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

Чему я научусь в уроке «Record: сопоставление ключей с типами значений»?

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

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

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

Сколько времени занимает урок «Record: сопоставление ключей с типами значений»?

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

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

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

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

  1. Partial и Required: переключение обязательности
  2. Pick и Omit: выбор свойств
  3. Record: сопоставление ключей с типами значений
  4. Readonly, Exclude, Extract и NonNullable
← Назад к TypeScript Academy