menu

Перагрузкі функцый у TypeScript

Часам сустракаюцца функцыі, якія вяртаюць значэнні, тып якіх залежыць ад перададзеных параметраў. Для гэтага ў TypeScript выкарыстоўваюць перагрузку функцый. Яна дазваляе паказаць розныя варыянты сигнатур функцыі.

Давайце паглядзім на прыкладзе. Хай у нас ёсць функцыя, якая разбівае сімвалы радка ў масіў літар:

function splitStr(str: string): string[] { return str.split(''); }

Хай у нас таксама ёсць функцыя, якая разбівае сімвалы ліку ў масіў лічбаў:

function splitNum(num: number): number[] { let str: string = String(num); let arr: string[] = str.split(''); return arr.map(elem => +elem); }

Давайце аб'яднаем абедзве функцыі ў адну. Новая функцыя ў залежнасці ад тыпу параметра павінна вяртаць альбо масіў лікаў альбо масіў радкоў.

Выкарыстаем перагрузку, каб аб'явіць розныя сигнатуры нашай функцыі:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // рэалізацыя абодвух сигнатур }

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

function splitVal(val: number): number[]; function splitVal(val: string): string[] { if (typeof val === 'string') { return val.split(''); } else { let str: string = String(val); let arr: string[] = str.split(''); return arr.map((elem: string): number => +elem); } }

У адрозненне ад іншых моваў, у TypeScript у перагрузцы ствараецца адна функцыя. Нельга зрабіць некалькі функцый з адным імем, але рознымі сигнатурамі.

Напішыце функцыю, якая будзе вяртаць альбо змяняць тэкст DOM элемента. Яна павінна працаваць наступным чынам:

text('#elem', 'text'); // усталюе тэкст text('#elem'); // верне бягучы тэкст
Беларуская
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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць