Как сделать функцию дженерик которая примет аргументами любое количество массивов обобщённого типа и соединит их в один?

Как сделать функцию дженерик которая должна, принимать аргументами любое количество массивов обобщённого типа и соединять их в один.

function concat<T>(arg: T[]): T{

}

concat();
// []

concat(['qwerty'], ['asd']);
// ['qwerty', 'asd']

concat([1, 2, 3], [4, 5], [6, 7, 8]);
// [1, 2, 3, 4, 5, 6, 7, 8]

Ответы (1 шт):

Автор решения: Anton Laid
function concat<T>(...arr: Iterable<T>[]): T[] {
  const res: T[] = [];

  for (let i = 0; i < arr.length; ++i) {
    res.push(...arr[i]);
  }
  return res;
}

console.log(concat(["qwerty"], ["asd"])); // ['qwerty', 'asd']
console.log(concat([1, 2, 3], [4, 5], [6, 7, 8])); // [1, 2, 3, 4, 5, 6, 7, 8]
→ Ссылка