menu

Preobremenitve funkcij v TypeScript

Včasih naletimo na funkcije, ki vračajo vrednosti, katerih tip je odvisen od podanih parametrov. Za to v TypeScript uporabljamo preobremenitev funkcij. Ta omogoča določitev različnih variant signatur funkcije.

Poglejmo si primer. Recimo, da imamo funkcijo, ki razdeli znake niza v polje črk:

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

Recimo tudi, da imamo funkcijo, ki razdeli števke števila v polje števk:

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

Zdaj združimo obe funkciji v eno. Nova funkcija mora glede na tip parametra vrniti bodisi polje števil bodisi polje nizov.

Uporabimo preobremenitev, da deklariramo različne signature naše funkcije:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // implementacija obeh signatur }

Zdaj napišimo implementacijo funkcije. V njeni kodi moramo s pogojem določiti, katera od signatur funkcije se je sprožila, in glede na to zagnati ustrezen kod z rezultatom ustreznega tipa:

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

Za razliko od drugih jezikov, v TypeScript z preobremenitvijo ustvarimo eno samo funkcijo. Ni mogoče ustvariti več funkcij z enakim imenom, a z različnimi signaturami.

Napišite funkcijo, ki bo vrnila ali spremenila besedilo DOM elementa. Delovala naj bi na naslednji način:

text('#elem', 'text'); // nastavi besedilo text('#elem'); // vrne trenutno besedilo
Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni