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:

typescriptfunction 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:

typescriptfunction 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:

typescriptlet myStr: {str: string} = {str: 'abcde'};

Wacha tuite kitendo myFunc, bila kusahau tena kuonyesha aina yake na tukipitisha kigezo myStr kama kigezo:

typescriptmyFunc <{str: string}> (myStr);
Задание 1

Kulingana na mfano uliochunguzwa kwenye somo, weka kitendo cha kupata urefu wa safu ya nambari.