menu

Funktsioonide ülekoormamine TypeScriptis

Mõnikord kohtame funktsioone, mis tagastavad väärtusi, mille tüpp sõltub edastatud parameetritest. Selleks kasutab TypeScript funktsioonide ülekoormamist. See võimaldab määrata erinevaid funktsiooni signatuuri variante.

Vaatame näidet. Olgu meil funktsioon, mis jagab stringi sümbolid tähtede massiiviks:

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

Olgu meil samuti funktsioon, mis jagab numbri sümbolid numbrite massiiviks:

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

Ühendame mõlemad funktsioonid üheks. Uus funktsioon peaks sõltuvalt parameetri tüübist tagastama kas numbrite massiivi või stringide massiivi.

Kasutame ülekoormamist, et deklareerida erinevad meie funktsiooni signatuurid:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // mõlema signatuuri implementatsioon }

Kirjutame nüüd funktsiooni implementatsiooni. Selle koodis peime tingimusega määrama, milline funktsiooni signatuuridest käivitati, ja sõltuvalt sellest käivitama õige koodi õige tüübiga tulemusega:

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); } }

Erinevalt teistest keeltest, TypeScriptis luuakse ülekoormamisel üks funktsioon. Ei saa teha mitut funktsiooni ühe nimega, kuid erinevate signatuuridega.

Kirjutage funktsioon, mis tagastab või muudab DOM elemendi teksti. See peaks töötama järgmiselt:

text('#elem', 'text'); // määrab teksti text('#elem'); // tagastab hetke teksti
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu