Mbingarkimet e Funksioneve në TypeScript
Ndonjëherë hasim funksione që kthejnë vlera, lloji i të cilave varet nga parametrat e kaluar. Për këtë në TypeScript përdoret mbingarkimi i funksioneve. Ai lejon të përcaktohen variante të ndryshme të nënshkrimeve të funksionit.
Le të shohim një shembull. Le të themi se kemi një funksion që ndan karakteret e një vargu në një grup shkronjash:
function splitStr(str: string): string[] {
return str.split('');
}
Le të themi gjithashtu se kemi një funksion që ndan shifrat e një numri në një grup numrash:
function splitNum(num: number): number[] {
let str: string = String(num);
let arr: string[] = str.split('');
return arr.map(elem => +elem);
}
Le të kombinojmë të dy funksionet në një. Funksioni i ri në varësi të llojit të parametrit duhet të kthejë ose një grup numrash ose një grup vargjesh.
Le të përdorim mbingarkim për të deklaruar nënshkrime të ndryshme të funksionit tonë:
function splitVal(val: number): number[];
function splitVal(val: string): string[] {
// implementimi i të dy nënshkrimeve
}
Le të shkruajmë tani implementimin e funksionit. Në kodin e tij ne duhet të përcaktojmë me kusht, cila nënshkrim i funksionit u aktivizua, dhe në varësi të kësaj të ekzekutojmë kodin e nevojshëm me një rezultat të llojit të duhur:
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);
}
}
Ndryshe nga gjuhët e tjera, në TypeScript në mbingarkim krijohet një funksion i vetëm. Nuk mund të bëhen disa funksione me një emër, por me nënshkrime të ndryshme.
Shkruani një funksion që do të kthejë ose modifikojë tekstin e një elementi DOM. Ai duhet të funksionojë si më poshtë:
text('#elem', 'text'); // do të vendosë tekstin
text('#elem'); // do të kthejë tekstin aktual