Vizuizi za Djeneneriki katika TypeScript
Katika moja ya masomo yaliyopita tulikuwa tunaunda kitendo cha aina ya djeneneriki ambacho kilipaswa kutoa urefu wa kigezo kilichopitishwa ndani yake. Hata hivyo, wakati wa ukusanyaji tulipata hitilafu, kwani sio aina zote zinaweza kuwa na urefu:
function myFunc < T > (data: T): T {
console.log(data.length); // hitilafu
return data;
}
Katika hali hiyo tulirekebisha hali, tukibadilisha
aina ya djeneneriki kuwa aina ya safu ya djeneneriki.
Lakini katika TypeScript kuna uwezekano wa kuunda
vizuizi vya djeneneriki. Ili kufanya hivyo, kwenye mabano ya pembe,
baada ya kigezo T tunaandika
neno msingi extends. Baada yake
kwenye mabano ya curly tunaandika kigezo kipya
str cha aina ya kamba.
Msimbo mwingine wa kitendo utabaki bila
mabadiliko:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Inatokea kwamba aina ya djeneneriki inarithi aina
ya kigezo str, iliyoonyeshwa kwenye mabano
ya curly. Sasa hebu tuangalie utendaji wa
kitendo chetu na tuunde kigezo myStr,
kinachorejelea aina str, na tukiweke
thamani yake kwenye mabano ya curly:
let myStr: {str: string} = {str: 'abcde'};
Wacha tuite kitendo myFunc, bila
kusahau tena kuonyesha aina yake na tukipitisha
kigezo myStr kama kigezo:
myFunc <{str: string}> (myStr);
Kulingana na mfano uliochunguzwa kwenye somo, weka kitendo cha kupata urefu wa safu ya nambari.