Gebruik van tipe parameters in beperkings van generiese in TypeScript
TypeScript het ook die vermoë om een tipe parameter te verklaar, wat deur 'n ander tipe parameter beperk sal word. Dit is nodig wanneer ons eienskappe van een objek na 'n ander moet kopieer, terwyl ons verseker dat ons geen oortollige eienskappe oordra nie.
Kom ons kyk na die volgende voorbeeld. Kom ons gaan terug
na funksie myFunc, wat die
lengte van 'n veranderlike definieer:
function myFunc <T> (data: T): T {
console.log(data.length); // fout
return data;
}
Maar nou wil ons hê dat hierdie funksie
slegs met die tipes moet werk wat
die eienskap length het. Om dit te doen, skep ons 'n
koppelvlak ILength, waaraan ons die
eienskap length van tipe nommer gee:
interface ILength {
length: number;
}
Vervolgens definieer ons 'n generiese tipe in ons funksie,
wat van ILength oorerf
deur die sleutelwoord extends te gebruik:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
So lyk ons volledige kode:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Kom ons toets die werking van ons funksie en vind die lengte van 'n string:
console.log(myFunc('abcde'));
Resultaat van uitgevoerde kode:
5
'abcde'
En laat ons nou 'n skikking as parameter oordra:
console.log(myFunc(['a', 'b', 'c']));
Resultaat van uitgevoerde kode:
3
[ 'a', 'b', 'c' ]