Tuple to Object
Завдання
Перетворити отриманий масив на об’єкт, де парами ключ-значення будуть елементи цього масиву.
Наприклад:
const tuple = ["tesla", "model 3", "model X", "model Y"] as const;
// expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
const result: TupleToObject<typeof tuple>;
Розв’язок
Нам потрібно взяти всі значення масиву і зробити їх ключами та, відповідно, значеннями нашого нового об’єкта.
Це легко зробити з індексними типами. Ми можемо взяти значення масиву
використовуючи вираз T[number]
. За допомогою типів зіставлення, ми можемо
ітерувати значення через T[number]
і повернути новий тип, ключами та
значеннями якого будуть відповідні елементи T[number]
:
type TupleToObject<T extends readonly PropertyKey[]> = { [K in T[number]]: K };
Коментарі