Utility Type Record в TypeScript
Record — это utility тип в TypeScript, который позволяет создавать новый объектный тип с определенными ключами и значениями. Он предоставляет удобный способ задания типа для объектов, где ключи могут быть ограничены конкретными значениями, а значения имеют определённый тип.
Синтаксис:
Record<K, T>
- K— тип ключей объекта (например, строки или числа).
- T— тип значений, которые соответствуют этим ключам.
Тип Record позволяет определить, что объект должен иметь определённый набор ключей и значений, что делает его очень полезным при работе с заранее известными ключами и типами значений.
Пример использования Record
- 
Создание объекта с предсказуемыми ключами и значениями: Предположим, у нас есть список ролей в приложении, и мы хотим создать объект, где каждому ключу (роли) соответствует массив строк, представляющих права пользователя. 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 Status { Active = "active", Inactive = "inactive", Pending = "pending", } type StatusMessage = Record<Status, string>; const statusMessages: StatusMessage = { [Status.Active]: "Your account is active.", [Status.Inactive]: "Your account is inactive.", [Status.Pending]: "Your account is pending approval.", };- Status— это перечисление, которое представляет возможные статусы.
- Record<Status, string>создаёт объект, где ключи — это значения из перечисления Status, а значения — строки, представляющие сообщения для каждого статуса.