⊗tsSpGnIms 35 of 37 menu

Абмежаванні абагульненняў у TypeScript

У адным з папярэдніх урокаў мы стваралі функцыю абагульненага тыпу, якая павінна была выводзіць даўжыню перададзенага ў яе параметра. Аднак пры кампіляцыі нам выдалася памылка, паколькі не ўсе тыпы могуць мець даўжыню:

function myFunc < T > (data: T): T { console.log(data.length); // памылка return data; }

У тым выпадку мы выправілі сітуацыю, змяніўшы абагульнены тып на тып абагульненага масіва. Але ў TypeScript ёсць магчымасць стварыць абмежаванні абагульненняў. Для гэтага ў вострых дужках, пасля зменнай T пішам ключавое слова extends. Пасля яго ў фігурных дужках запісваем новую зменную str радковага тыпу. Астатні код функцыі застанецца без зменаў:

function myFunc <T extends {str: string}> (data: T): void { console.log(data.str.length); }

Выходзіць, што абагульнены тып наследуе тып зменнай str, указанай у фігурных дужках. Цяпер давайце праверым працу нашай функцыі і створым зменную myStr, якая спасылаецца на тып str, і зададзім ёй значэнне ў фігурных дужках:

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

Давайце выклічам функцыю myFunc, не забываючы зноў указаць яе тып і перададзім зменную myStr як параметр:

myFunc <{str: string}> (myStr);

На аснове прыкладу, разгледжанага ў уроку, задайце функцыю для знаходжання даўжыні лікавага масіва.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць