Tuple to Union
Challenge
Implement a generic TupleToUnion<T> which covers the values of a tuple to its values union.
For example
type Arr = ["1", "2", "3"];
type Test = TupleToUnion<Arr>; // expected to be '1' | '2' | '3'
Solution
Der Trick zur Lösung dieses Problems liegt einfach darin, den Eingabetyp als eine Tuple zu definieren:
// Eine Tupel hat einen festen Wert, und zeichnet sich entsprechend durch das 'readonly' aus, wodurch TypeScript sicherstellt, dass wir kein neues Element einfügen können.
type TupleToUnion<T extends readonly any[]>
Nun kann man wieder den Lookup-Typ number nutzen, um alle Werte der Tupel als Vereinigung zu erhalten.
type TupleToUnion<T extends readonly any[]> = T[number];