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]
.
type TupleToObject<T extends readonly PropertyKey[]> = { [K in T[number]]: K };
Комментарии