Skip to main content
Практика завдань

Утилітарний тип record у TypeScript

Record — це утилітний тип у TypeScript, який дозволяє створювати новий тип об'єкта з певними ключами та значеннями. Він надає зручний спосіб визначити тип для об'єктів, де ключі можуть бути обмежені певними значеннями, а значення мають певний тип.

Синтаксис:

typescript
Record<K, T>
  • K — тип ключів об'єкта (наприклад, рядки або числа).
  • T — тип значень, що відповідають цим ключам.

Тип Record дозволяє визначити, що об'єкт повинен мати певний набір ключів та значень, що робить його дуже корисним при роботі з попередньо визначеними ключами та типами значень.

Приклад використання Record

  • Створення об'єкта з передбачуваними ключами та значеннями:

Припустимо, у нас є список ролей у додатку, і ми хочемо створити об'єкт, де кожен ключ (роль) відповідає масиву рядків, що представляють дозволи користувача.

typescript
type UserRoles = "admin" | "user" | "guest"; type RolePermissions = Record<UserRoles, string[]>; const rolePermissions: RolePermissions = { admin: ["create", "edit", "delete"], user: ["view", "edit"], guest: ["view"], };
  • UserRoles — це тип, що представляє ролі користувачів (наприклад, "admin", "user", "guest").
  • Record<UserRoles, string[]> створює об'єкт, де ключі — це рядки, що відповідають ролям, а значення — масиви рядків, що містять дозволи доступу для кожної ролі.
  • Використання Record для створення об'єктів з динамічними ключами: Ви можете використовувати Record для створення об'єктів з динамічними ключами, наприклад, на основі значень enum.
typescript
enum Status { Active = "active", Inactive = "inactive", Pending = "pending", } type StatusMessage = Record<Status, string>; const statusMessages: StatusMessage = { [Status.Active]: "Ваш акаунт активний.", [Status.Inactive]: "Ваш акаунт неактивний.", [Status.Pending]: "Ваш акаунт чекає на підтвердження.", };
  • Status — це enum, що представляє можливі статуси.
  • Record<Status, string> створює об'єкт, де ключі — це значення з enum Status, а значення — рядки, що представляють повідомлення для кожного статусу.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань