Ограничења генерика у TypeScript-у
У једној од претходних лекција креирали смо функцију генеричког типа која је требало да прикаже дужину параметра прослеђеног у њу. Међутим, при компајлирању добили смо грешку, јер не сви типови могу имати дужину:
function myFunc < T > (data: T): T {
console.log(data.length); // грешка
return data;
}
У том случају смо исправили ситуацију тако што смо променили
генерички тип у тип генеричког низа.
Али у TypeScript-у постоји могућност да се креирају
ограничења генерика. За то у угаоним
заградама, после променљиве T пишемо
кључну реч extends. После ње
у витичастим заградама уписујемо нову
променљиву str типа стринг.
Остатак кода функције остаје без
промена:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Излази да генерички тип наслеђује тип
променљиве str, назначене у витичастим
заградама. Сада хајде да проверимо рад
наше функције и креирајмо променљиву myStr,
која се односи на тип str, и задајмо јој
вредност у витичастим заградама:
let myStr: {str: string} = {str: 'abcde'};
Хајде да позовемо функцију myFunc, не
заборавајући поново да назначимо њен тип и проследимо
променљиву myStr као параметар:
myFunc <{str: string}> (myStr);
На основу примера разматраног у лекцији, задајте функцију за проналажење дужине нумеричког низа.