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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј