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:

typescriptfunction func(data: number): number {
  return data;
}

Zdaj napišimo funkcijo, ki kot parameter sprejme niz in vrne niz:

typescriptfunction 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):

typescriptfunction 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:

typescriptfunction 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:

typescriptfunction 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:

typescriptconsole.log( func(3) );   // izpiše 3

Pokličimo funkcijo z nizom:

typescriptconsole.log( func('x') ); // izpiše 'x'
Задание 1

Ustvarite funkcijo, ki kot parameter sprejme bodisi dve števili, bodisi dva niza. Funkcija mora vrniti vsoto parametrov.