menu

Funkciju pārslodzes TypeScript

Dažreiz sastopamas funkcijas, kuras atgriež vērtības, kuru tips ir atkarīgs no padotajiem parametriem. Šim nolūkā TypeScript izmanto funkciju pārslodzi. Tā ļauj norādīt dažādus funkcijas parakstu variantus.

Apskatīsim piemērā. Pieņemsim, ka mums ir funkcija, kas sadala simbolus virknē masīvā ar burtiem:

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

Pieņemsim, ka mums ir arī funkcija, kas sadala skaitļa simbolus masīvā ar cipariem:

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

Apvienosim abas funkcijas vienā. Jaunajai funkcijai atkarībā no parametra tipa jāatgriež vai nu skaitļu masīvs, vai virkņu masīvs.

Izmantosim pārslodzi, lai deklarētu mūsu funkcijas dažādus parakstus:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // abu parakstu implementācija }

Uzrakstīsim tagad funkcijas implementāciju. Tās kodā mums ar nosacījumu jānosaka, kurš no funkcijas parakstiem ir nostrādājis, un atkarībā no tā jāpalaiž vajadzīgais kods ar rezultātu vajadzīgā tipā:

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

Atšķirībā no citām valodām, TypeScript pārslodzē tiek izveidota viena funkcija. Nevar izveidot vairākas funkcijas ar vienu nosaukumu, bet dažādiem parakstiem.

Uzrakstiet funkciju, kas atgriezīs vai mainīs DOM elementa tekstu. Tai jāstrādā šādi:

text('#elem', 'text'); // iestatīs tekstu text('#elem'); // atgriezīs pašreizējo tekstu
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt