typescript / expert
Snippet
Typsichere endrekursive Tupel-Umkehrung
Dieses Snippet zeigt die Endrekursions-Optimierung auf Typebene zur Umkehrung von Tupeln. Durch die Nutzung variadischer Tupelelemente mit einem Akkumulator-Parameter verarbeitet TypeScript tiefe Tupel-Operationen sauber, ohne frühzeitige Rekursionstiefen-Fehler des Compilers auszulösen.
snippet.ts
typescript
1
2
3
4
5
6
type ReverseTuple<T extends readonly unknown[], Acc extends readonly unknown[] = []> =T extends readonly [infer Head, ...infer Tail]? ReverseTuple<Tail, [Head, ...Acc]>: Acc;type Reversed = ReverseTuple<[number, string, boolean]>;
Erklärung
1
type ReverseTuple<T extends readonly unknown[], Acc extends readonly unknown[] = []> =
Deklariert einen rekursiven bedingten Typ, der ein Eingabe-Tupel T und einen Akkumulator Acc akzeptiert.
2
T extends readonly [infer Head, ...infer Tail]
Destrukturiert das Eingabe-Tupel mittels infer in das Head-Element und ein Tail-Rest-Array.
3
? ReverseTuple<Tail, [Head, ...Acc]>
Ruft sich rekursiv mit den verbleibenden Elementen auf und stellt Head dem Akkumulator voran.
4
: Acc;
Der Basisfall gibt das akkumulierte umgekehrte Tupel zurück, wenn T leer ist.
5
type Reversed = ReverseTuple<[number, string, boolean]>;
Wertet zum umgekehrten Tupeltyp [boolean, string, number] aus.