menu

Függvény túlterhelés a TypeScript-ben

Előfordulnak olyan függvények, amelyek olyan értékeket adnak vissza, amelyek típusa a paraméterektől függ. Erre a TypeScript a függvény túlterhelést használja. Ez lehetővé teszi a függvény különböző szignatúráinak megadását.

Nézzünk egy példát. Tegyük fel, hogy van egy függvényünk, amely egy string karaktereit betűk tömbjére bontja:

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

Tegyük fel, hogy van még egy függvényünk, amely egy szám karaktereit számjegyek tömbjére bontja:

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

Most egyesítsük mindkét függvényt egybe. Az új függvénynek a paraméter típusától függően vissza kell adnia vagy egy számokból álló tömböt, vagy egy stringekből álló tömböt.

Használjunk túlterhelést, hogy deklaráljuk a függvényünk különböző szignatúráit:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // mindkét szignatúra implementációja }

Most írjuk meg a függvény implementációját. A kódjában el kell döntenünk egy feltétellel, hogy a függvény melyik szignatúrája aktiválódott, és ennek megfelelően kell elindítanunk a megfelelő kódot a helyes típusú eredménnyel:

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

Más nyelvekkel ellentétben a TypeScript-ben a túlterhelés egyetlen függvényt hoz létre. Nem lehet több, azonos nevű függvényt létrehozni, de különböző szignatúrákkal.

Írj egy függvényt, amely visszaadja vagy megváltoztatja egy DOM elem szövegét. A következőképpen kell működnie:

text('#elem', 'text'); // beállítja a szöveget text('#elem'); // visszaadja a jelenlegi szöveget
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás