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