Middle
Čo sú generiká?
sobes.tech AI
Odpoveď od AI
Generik v TypeScript-u omogočajo ustvarjanje komponent (funkcij, razredov, vmesnikov), ki lahko delujejo z različnimi tipi podatkov, hkrati pa ohranjajo varnost tipov. Omogočajo pisanje bolj prilagodljivega in ponovno uporabnega kode, ne da bi izgubili prednosti statične tipizacije. Najenostavnejši primer je uporaba generikov v funkcijah za vračanje istega tipa, ki je bil predan kot argument.
// Funkcija, ki sprejema argument kateregakoli tipa in ga vrne
function identity<T>(arg: T): T {
return arg;
}
// Uporaba generika s specifičnim tipom - string
let outputString = identity<string>("niz"); // Tip outputString bo string
// Uporaba generika z avtomatskim izvlečkom tipa - number
let outputNumber = identity(123); // Tip outputNumber bo number
Generike je mogoče uporabiti tudi v razredih:
// Razred, ki dela z elementi kateregakoli tipa
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Ustvarjanje instance GenericBox s tipom string
let stringBox = new GenericBox<string>("zdravo");
// Ustvarjanje instance GenericBox s tipom boolean
let booleanBox = new GenericBox(true); // TypeScript bo odvodil tip
In v vmesnikih:
// Vmesnik z generikom
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Uporaba vmesnika s specifičnimi tipi
let stringNumberPair: KeyValuePair<string, number> = { key: "starost", value: 30 };
Prednosti uporabe generikov:
- Ponovna uporaba kode: Ena struktura se lahko uporablja z različnimi tipi podatkov.
- Varnost tipov: Prevajalnik preverja tipe med prevajanjem, s čimer preprečuje potencialne napake.
- Berljivost in vzdrževanje: Koda postane bolj razumljiva, saj je jasno, s katerimi tipi komponenta dela.
Generike se pogosto uporabljajo v knjižnicah in okvirih, kot so React (za tipiziranje propsov komponent), Redux (za tipiziranje skladišča) in pri delu z zbirkami podatkov.