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];

References