Beperkings van Generiese Tipes in TypeScript
In een van die vorige lesse het ons 'n funksie van 'n generiese tipe geskep wat die lengte van die parameter wat daaraan oorgedra is moes uitskryf. By kompilering het ons eger 'n fout gekry, aangesien nie alle tipes 'n lengte kan h nie:
function myFunc < T > (data: T): T {
console.log(data.length); // fout
return data;
}
In daardie geval het ons die situasie reggestel deur die
generiese tipe na 'n tipe van 'n generiese skikking te verander.
Maar in TypeScript is daar 'n moontlikheid om
beperkings vir generiese tipes te skep. Om dit te doen, skryf ons
in die hoekige hakies, na die veranderlike T die
sleutelwoord extends. Daarna
skryf ons in krulhakies 'n nuwe
veranderlike str van string tipe.
Die res van die funksiekode sal onveranderd bly:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Dit beteken dat die generiese tipe die tipe van die
veranderlike str oorerf, wat in die krulhakies
aangedui is. Kom ons toets nou die werking van
ons funksie en skep 'n veranderlike myStr,
wat verwys na die tipe str, en gee dit
'n waarde in krulhakies:
let myStr: {str: string} = {str: 'abcde'};
Kom ons roep die funksie myFunc, en
moenie vergeet om weer die tipe daarvan aan te dui nie en dra die
veranderlike myStr as 'n parameter oor:
myFunc <{str: string}> (myStr);
Gebaseer op die voorbeeld wat in die les oorweeg is, skep 'n funksie om die lengte van 'n numeriese skikking te vind.