Функција на генерализиран тип во TypeScript

Во претходните лекции направивме идентитетска функција, која прифаќаше параметри од генерализиран тип. Сега ќе научиме како да го опишеме типот на таква функција и да креираме генерализирани интерфејси.

Функцијата на генерализиран тип може исто така да се запише и во форма на стрелеста функција. Ајде да декларираме променлива func, на која ќе и биде типот на генерализирана функција:

typescriptfunction myFunc <T> (data: T): T {
  return data;
}

let func: <T> (data: T) => T = myFunc;

Може да се зададе и друг симбол за генерализираниот тип на таква променлива. Главно е да се внимава, така што имињата на типовите да не конфликтираат:

typescriptfunction myFunc <T> (data: T): T {
  return data;
}

let func: <U> (data: U) => U = myFunc;

Генерализираниот тип може да се запише, со затворање на сигнатурата за повикување и типот на функцијата во кадрави загради:

typescriptfunction myFunc < T > (data: T): T {
  return data;
}

let func: {<U> (data: U): U} = myFunc;
Задание 1

Напишете функција за одредување на должината на низа од генерализиран тип во вариантите, опишани во оваа лекција.