Утилітарний тип 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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.