Tuple to Union
Проблема
Реализовать TupleToUnion<T>
который переводит элементы кортежа в их
объединение. Например:
type Arr = ["1", "2", "3"];
const a: TupleToUnion<Arr>; // expected to be '1' | '2' | '3'
Решение
Нам нужно взять все элементы из массива и конвертировать их в объединение элементов. К счастью, TypeScript это умеет делать на уровне системы типов - типы поиска.
Используя конструкцию T[number]
мы получим объединение всех элементов кортежа
T
:
type TupleToUnion<T> = T[number];
Но, это решение не компилируется по причине “Type ‘number’ cannot be used to
index type ‘T’“. Потому что, нету ограничений на T
, которые укажут на
принадлежность T
к массиву, типу, который можно проиндексировать. Починим это,
добавив ограничение:
type TupleToUnion<T extends unknown[]> = T[number];
Комментарии