// *** before: ***
// объединить кортеж с ещё одним набором элементов через spread типа было нельзя
function concat(arr1: any[], arr2: any[]): any[] {
return [...arr1, ...arr2];
}
// *** in version 4.0: ***
type Concat<T extends unknown[], U extends unknown[]> = [...T, ...U];
function concatTyped<T extends unknown[], U extends unknown[]>(arr1: [...T],
arr2: [...U]): Concat<T, U> {
return [...arr1, ...arr2];
}
const result = concatTyped([1, 2] as const, ["a", "b"] as const);
// result: [1, 2, "a", "b"]