Generičke promenljive u TypeScript-u
Za bolje razumevanje koncepta generika hajde da napravimo našu prvu funkciju - identičnu funkciju. Takva funkcija vraća tačno ono što joj je prosleđeno - sa istim tipom.
Hajde za početak da napišemo varijante naše funkcije odvojeno.
Napišimo funkciju koja kao parametar prima broj i vraća broj:
function func(data: number): number {
return data;
}
Sada napišimo funkciju koja kao parametar prima string i vraća string:
function func(data: string): string {
return data;
}
Recimo sada da želimo da sve to radi jedna funkcija. To jest, želimo da izvršimo generalizaciju.
Za to koristimo generičku promenljivu,
koja čuva u sebi tip podataka. Takva promenljiva
se deklariše u uglastim zagradama ispred okruglih
zagrada sa parametrima funkcije. Hajde da
deklarišemo takvu promenljivu, dajući joj ime
T (može bilo koje):
function func <T>(ovde parametri) {
return data;
}
Nakon toga ćemo imati promenljivu T,
koju možemo koristiti da u nju smestimo tip
parametra, a zatim
ga navedemo kao povratnu vrednost.
Navedimo tip našem parametru u obliku naše promenljive:
function func <T>(data: T) {
return data;
}
Ispostavlja se da parametar može biti prosleđen
u bilo kom tipu, i taj tip će biti sačuvan u našu
promenljivu T.
Sada iskoristimo vrednost promenljive T
kao naznaku rezultata funkcije:
function func <T>(data: T): T {
return data;
}
Sada će se ispostaviti da tip rezultata funkcije dolazi iz tipa parametra. Hajde da proverimo.
Pozovimo funkciju sa brojem:
console.log( func(3) ); // ispisuje 3
Pozovimo funkciju sa stringom:
console.log( func('x') ); // ispisuje 'x'
Napravite funkciju koja kao parametar prima ili dva broja, ili dva stringa. Svojim rezultatom funkcija treba da vrati zbir parametara.