menu

Funksjons overbelastning i TypeScript

Noen ganger møter vi funksjoner som returnerer verdier, hvis type avhenger av de overførte parameterne. For dette bruker TypeScript funksjons overbelastning. Den tillater oss å spesifisere forskjellige varianter av funksjonens signaturer.

La oss se på et eksempel. Anta at vi har en funksjon som deler opp tegnene i en streng til en matrise med bokstaver:

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

Anta at vi også har en funksjon som deler opp sifrene i et tall til en matrise med tall:

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

La oss kombinere begge funksjonene til én. Den nye funksjonen skal, avhengig av parameterens type, returnere enten en matrise med tall eller en matrise med strenger.

La oss bruke overbelastning for å deklarere forskjellige signaturer for vår funksjon:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // implementering av begge signaturer }

La oss nå skrive implementeringen av funksjonen. I koden må vi med en betingelse avgjøre hvilken av funksjonens signaturer som ble utløst, og avhengig av dette kjøre den nødvendige koden med et resultat av riktig type:

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

I motsetning til andre språk, opprettes det én funksjon i TypeScript sin overbelastning. Man kan ikke lage flere funksjoner med ett navn, men med forskjellige signaturer.

Skriv en funksjon som enten returnerer eller endrer teksten til et DOM-element. Den skal fungere som følger:

text('#elem', 'text'); // setter teksten text('#elem'); // returnerer den nåværende teksten
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis