capypad
0 Tage Serie
typescript / expert
Snippet

Variadische Tupel-Typen für funktionale Komposition

Variadische Tupel-Typen erlauben es uns, die Struktur von Arrays und Argumenten präzise zu erfassen und zu manipulieren. Die Verwendung des Spread-Operators in Tupel-Typen ermöglicht rekursive Operationen auf Funktionsparametern, was für High-Level funktionale Programmierung unerlässlich ist.

snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
type Last<T extends any[]> = T extends [...any, infer L] ? L : never;
type Shift<T extends any[]> = T extends [any, ...infer R] ? R : never;
 
function tail<T extends any[]>(arr: [...T]): Shift<T> {
const [_, ...rest] = arr;
return rest as Shift<T>;
}
 
const tuple = [1, "hello", true] as const;
const result = tail(tuple); // ["hello", true]
Erklärung
1
T extends [...any, infer L]
Verwendet Spread am Anfang, um alle Elemente außer dem letzten zu erfassen, welches als 'L' inferiert wird.
2
[...T]
Ein variadischer Tupel-Spread, der die exakten Literalwerte und die Reihenfolge beibehält, wenn die Eingabe ein 'const'-Array ist.