Продвинутый Typescript
Теория: Записи
Объекты с динамической структурой часто используются для построения контекста или хранения данных. Например, так происходит, когда мы добавляем в них поля во время исполнения программы. Давайте напишем вспомогательный тип для построения такого объекта:
Ключ Key примет перебором все значения из K. В свою очередь, K является подмножеством string, а V может быть любым. Так мы создали свой тип Context со строковыми полями и неизвестным типом для значения.
Подобная конструкция, когда мы не задаем дополнительно никаких специфичных полей с динамическими ключами, встречается довольно часто. Встроенные Utility Types предоставляют для этого готовое решение — Record<Keys, Type>. Этот обобщенный тип принимает первым аргументом тип ключа, а вторым — тип значения. Внутри все устроенно схожим образом, как в нашем типе Context:
Таким типом SongsRating мы можем задать тип объекта с произвольным ключом (именем песни) и рейтингом — числом от нуля до пяти.
Использование Record является предпочтительным при описании объектных типов в TypeScript. Это позволяет гибко и лаконично описывать динамические структуры и использовать Record совместно с другими типами данных.





