Ograničenja generika u TypeScript-u
U jednoj od prethodnih lekcija kreirali smo funkciju generičkog tipa koja je trebalo da vrati dužinu prosleđenog parametra. Međutim, pri kompajliranju smo dobili grešku, pošto nemaju svi tipovi dužinu:
function myFunc < T > (data: T): T {
console.log(data.length); // greška
return data;
}
Tada smo situaciju ispravili tako što smo promenili
generički tip u tip generičkog niza.
Ali u TypeScript-u postoji mogućnost da se stvore
ograničenja generika. Za to u uglastim
zagradama, posle promenljive T pišemo
ključnu reč extends. Posle nje
u vitičastim zagradama upisujemo novu
promenljivu str tipa string.
Ostatak koda funkcije ostaje bez
izmena:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Ispostavlja se da generički tip nasleđuje tip
promenljive str, navedene u vitičastim
zagradama. Sada hajde da proverimo rad
naše funkcije i kreiramo promenljivu myStr,
koja referiše na tip str, i dodelimo
joj vrednost u vitičastim zagradama:
let myStr: {str: string} = {str: 'abcde'};
Hajde da pozovemo funkciju myFunc, ne
zaboravljajući ponovo da navedemo njen tip i prosledimo
promenljivu myStr kao parametar:
myFunc <{str: string}> (myStr);
Na osnovu primera razmatranog u lekciji, postavite funkciju za pronalaženje dužine numeričkog niza.