Omejitve generikov v TypeScript
V eni izmed prejšnjih lekcij smo ustvarili funkcijo generičnega tipa, ki naj bi izpisala dolžino parametra, ki ji je bil poslan. Med prevajanjem pa smo prejeli napako, ker nimajo vse vrste dolžine:
function myFunc < T > (data: T): T {
console.log(data.length); // napaka
return data;
}
Takrat smo popravili situacijo tako, da smo
spremenili generični tip v tip generičnega
pole. Toda v TypeScript obstaja možnost
ustvariti omejitve generikov. Za to v
kotnih oklepajih, za spremenljivko T napišemo
ključno besedo extends. Za njo
v zavitih oklepajih zapišemo novo
spremenljivko str tipa niz.
Preostala koda funkcije ostane brez
sprememb:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Izkazalo se je, da generični tip podeduje tip
spremenljivke str, določene v zavitih
oklepajih. Zdaj pa preverimo delovanje
naše funkcije in ustvarimo spremenljivko myStr,
ki se sklicuje na tip str, in ji določimo
vrednost v zavitih oklepajih:
let myStr: {str: string} = {str: 'abcde'};
Pokličimo funkcijo myFunc, ne
pozabimo ponovno določiti njenega tipa in poslati
spremenljivko myStr kot parameter:
myFunc <{str: string}> (myStr);
Na podlagi primera, obravnavanega v lekciji, nastavite funkcijo za iskanje dolžine številskega polja.