Generične spremenljivke v TypeScript
Za boljše razumevanje koncepta generikov ustvarimo našo prvo funkcijo - identitetno funkcijo. Takšna funkcija vrne točno to, kar je bila posredovana - z enakim tipom.
Za začetek napišimo različice naše funkcije ločeno.
Napišimo funkcijo, ki kot parameter sprejme število in vrne število:
function func(data: number): number {
return data;
}
Zdaj napišimo funkcijo, ki kot parameter sprejme niz in vrne niz:
function func(data: string): string {
return data;
}
Recimo, da zdaj želimo, da vse to opravlja ena funkcija. To pomeni, da želimo izvesti posploševanje.
Za to uporabimo generično
spremenljivko, ki shrani tip podatkov.
Taka spremenljivka se deklarira
v kotnih oklepajih pred okroglimi oklepaji
s parametri funkcije. Deklarirajmo
tako spremenljivko in ji dajmo ime T
(lahko poljubno):
function func <T>(tukaj parametri) {
return data;
}
Po tem bomo imeli na voljo spremenljivko T,
ki jo lahko uporabimo, da vanjo
shranimo tip parametra, nato pa
ga določimo kot vrnitveni
tip.
Določimo našemu parametru tip v obliki naše spremenljivke:
function func <T>(data: T) {
return data;
}
Izkazalo se bo, da je parameter lahko posredovan
v poljubnem tipu in ta tip bo shranjen v našo
spremenljivko T.
Zdaj uporabimo vrednost spremenljivke T
za določitev rezultata funkcije:
function func <T>(data: T): T {
return data;
}
Zdaj se bo izkazalo, da bo tip rezultata funkcije izhajal iz tipa parametra. Preverimo.
Pokličimo funkcijo s številom:
console.log( func(3) ); // izpiše 3
Pokličimo funkcijo z nizom:
console.log( func('x') ); // izpiše 'x'
Ustvarite funkcijo, ki kot parameter sprejme bodisi dve števili, bodisi dva niza. Funkcija mora vrniti vsoto parametrov.