Matumizi ya Vigezo vya Aina katika Vizuizi vya Generics katika TypeScript
Pia katika TypeScript kuna uwezekano wa kutangaza kigezo kimoja cha aina, ambacho kitazuiliwa na kigezo kingine cha aina. Hii inahitajika wakati inabidi kunakili sifa kutoka kwa kitu kimoja hadi kingine, wakati huo huo kujilinda na hatari ya kupitisha sifa za ziada.
Wacha tuzingatie mfano ufuatao. Turejee
kwenye kitendo myFunc, kinachobainisha
urefu wa kutofautisha:
function myFunc <T> (data: T): T {
console.log(data.length); // hitilafu
return data;
}
Hata hivyo sasa tunataka kitendo hiki
kifanye kazi tu na aina zile, ambazo
zina sifa length. Ili kufanya hivyo tutatengeneza
kiingilio ILength, ambacho tutaweka
sifa length ya aina ya nambari:
interface ILength {
length: number;
}
Ifuatayo katika kitendo chetu tuweke aina ya jumla
ambayo inarithi kutoka ILength
kupitia neno kuu extends:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Hivi ndivyo msimbo wetu kamili unavyoonekana:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Wacha tuangalie utendakazi wa kitendo chetu na tupate urefu wa mfupo:
console.log(myFunc('abcde'));
Matokeo ya msimbo uliotekelezwa:
5
'abcde'
Na sasa pitisha orodha katika kigezo:
console.log(myFunc(['a', 'b', 'c']));
Matokeo ya msimbo uliotekelezwa:
3
[ 'a', 'b', 'c' ]