Concat
Challenge
Implement the JavaScript Array.concat function in the type system. A type takes the two arguments. The output should be a new array that includes inputs in ltr order
For example:
type Result = Concat<[1], [2]>; // expected to be [1, 2]
Solution
Ziel ist es, zwei Arrays zusammenzuführen. Basierend auf diesem Wissen kann man bereits die Konditionen für die Eingabewerte definieren:
// Beide Eingabetypen sollten Arrays aus beliebigen Typen sein
type Concat<T extends unknown[], U extends unknown[]>
Um nun beide zu vereinen, kann man wie in JavaScript einfach den Spread-Operator (…) nutzen, um beliebige Array-Typen in ein Array zu packen.
Die bereits definierte Kondition für die Typen (unknown[]) ist hierbei wichtig, damit TypeScript versteht, dass es sich um sogenannte variativ Tuple Types handelt. Vergisst man diese, ist ein Zusammenführen über den Spread-Operator nicht möglich.
type Concat<T extends any[], U extends unknown[]> = [...T, ...U];
References
(Variadic Tuple Types)[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html]