Абагульеныя тыпавыя зменныя ў 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

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