Изменения в новых версиях / TypeScript 4.0

// *** 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<TU> {
    return [...arr1, ...arr2];
}
const result = concatTyped([12as const, ["a""b"as const);
// result: [1, 2, "a", "b"]