typescript / intermediate
Snippet
Transformation von Argumenttypen mit gemappten Tupel-Typen
Gemappte Tupel-Typen transformieren die Elementtypen eines Tupel-Arrays unter Beibehaltung der Reihenfolge für starke Typinferenz bei Promise-Arrays.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type PromiseTuple<T extends readonly unknown[]> = {[K in keyof T]: Promise<T[K]>;};async function awaitAll<T extends readonly unknown[]>(promises: [...PromiseTuple<T>]): Promise<T> {return Promise.all(promises) as Promise<any>;}async function main() {const [num, str] = await awaitAll([Promise.resolve(42),Promise.resolve('hello'),]);}
Erklärung
1
type PromiseTuple<T extends readonly unknown[]> = {
Definiert einen generischen Typ, der ein auf schreibgeschützte Arrays beschränktes Tupel T akzeptiert.
2
[K in keyof T]: Promise<T[K]>;
Iteriert über jedes Indexelement im Tupel und hüllt den Werttyp in ein Promise ein.
3
promises: [...PromiseTuple<T>]
Verwendet variadische Tupelsyntax zur Typinferenz einzelner positional erfasster Elemente.
4
const [num, str] = await awaitAll([
Leitet den Tupeltyp [number, string] für den entpackten Rückgabewert ab.