Обобщенные типовые переменные в TypeScript

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

Давайте создадим функцию для определения длины переменной обобщенного типа:

typescriptfunction myFunc <T> (data: T): T {
  console.log(data.length); // ошибка
  return data;
}

Ошибка возникает из-за того, что не все типы имеют длину. Например, для булевых значений такое действие невозможно. Однако если мы уточним тип и укажем его как массив, то код сработает правильно. Ведь у каждого массива, неважно какого он типа, есть длина:

typescriptfunction myFunc <T> (data: T[]): T[] {
  console.log(data.length); // 3
  return data;
}

console.log(myFunc([1, 3, 5])); // [ 1, 3, 5 ]
Задание 1

Напишите функцию для перебора и вывода всех элементов массива обобщенного типа в консоль.