Funksie-oorbelasting in TypeScript
Soms kom funksies voor wat waardes teruggee waarvan die tipe afhang van die oorgedraagde parameters. Vir hierdie doel in TypeScript gebruik ons funksie-oorbelasting. Dit laat ons toe om verskillende weergawes van die funksie se handtekening te spesifiseer.
Kom ons kyk na 'n voorbeeld. Laat ons sê ons het 'n funksie wat die karakters van 'n string in 'n lys van letters opbreek:
function splitStr(str: string): string[] {
return str.split('');
}
Laat ons ook sê ons het 'n funksie wat die syfers van 'n getal in 'n lys van syfers opbreek:
function splitNum(num: number): number[] {
let str: string = String(num);
let arr: string[] = str.split('');
return arr.map(elem => +elem);
}
Kom ons kombineer albei funksies in een. Die nuwe funksie moet, afhangende van die tipe parameter, óf 'n lys van getalle óf 'n lys van string teruggee.
Kom ons gebruik oorbelasting om verskillende handtekeninge vir ons funksie te verklaar:
function splitVal(val: number): number[];
function splitVal(val: string): string[] {
// implementering van albei handtekeninge
}
Kom ons skryf nou die implementering van die funksie. In die kode daarvan moet ons deur 'n voorwaardebepaling vasstel watter een van die funksie se handtekeninge geaktiveer is, en afhangende daarvan die nodige kode uitvoer met 'n resultaat van die nodige tipe:
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);
}
}
Anders as in ander tale, word in TypeScript slegs een funksie in oorbelasting geskep. 'n Mens kan nie verskeie funksies met een naam maak nie, maar met verskillende handtekeninge.
Skryf 'n funksie wat óf die teks van 'n DOM-element teruggee óf dit verander. Dit moet soos volg werk:
text('#elem', 'text'); // sal die teks stel
text('#elem'); // sal die huidige teks teruggee