PassFront
  1. PassFront
  2. База знаний
  3. Utility Types

Что такое Record в TypeScript?

Utility Types

`Record<K, V>` — тип объекта, у которого ключи типа K, а значения типа V.

type Role = 'admin' | 'editor' | 'viewer';

const permissions: Record<Role, string[]> = {
  admin: ['read', 'write', 'delete'],
  editor: ['read', 'write'],
  viewer: ['read'],
};

Если ключи — union литералов, TypeScript потребует все ключи: пропустить viewer не получится.

Как устроен

type Record<K extends keyof any, T> = { [P in K]: T };

Где применяют

  • словари: Record<string, number>;
  • таблицы соответствия для union (конфиги, переводы, маппинги статусов на цвета).

Нюанс

Record<string, User> обещает, что по любому ключу есть значение, хотя на практике его может не быть. Для честности включают noUncheckedIndexedAccess или используют Partial<Record<…>> / Map.

Коротко для собеседования

Record<K, V> — объект с ключами K и значениями V; с union-ключами требует заполнить все варианты.

Подробнее: TypeScript — Utility Types

Другие вопросы раздела