Middle
Šta su generici?
sobes.tech АИ
Одговор од АИ
Generici u TypeScript-u omogućavaju kreiranje komponenti (funkcija, klasa, interfejsa) koje mogu raditi sa različitim tipovima podataka, uz očuvanje sigurnosti tipova. Oni omogućavaju pisanje fleksibilnijeg i ponovo upotrebljivog koda, ne gubeći prednosti statičkog tipiziranja. Najjednostavniji primer je korišćenje generika u funkcijama za vraćanje istog tipa koji je dat kao argument.
// Funkcija koja prihvata argument bilo kog tipa i vraća ga
function identity<T>(arg: T): T {
return arg;
}
// Korišćenje generika sa specifičnim tipom - string
let outputString = identity<string>("niz"); // Tip outputString biće string
// Korišćenje generika sa automatskim izvlačenjem tipa - number
let outputNumber = identity(123); // Tip outputNumber biće number
Generici se mogu koristiti i u klasama:
// Klasa koja radi sa elementima bilo kog tipa
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Kreiranje instance GenericBox sa tipom string
let stringBox = new GenericBox<string>("zdravo");
// Kreiranje instance GenericBox sa tipom boolean
let booleanBox = new GenericBox(true); // TypeScript će odrediti tip
I u interfejsima:
// Interfejs sa generikom
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Korišćenje interfejsa sa specifičnim tipovima
let stringNumberPair: KeyValuePair<string, number> = { key: "starost", value: 30 };
Prednosti korišćenja generika:
- Ponovna upotreba koda: Struktura se može koristiti sa različitim tipovima podataka.
- Sigurnost tipova: Kompajler proverava tipove tokom kompilacije, sprečavajući potencijalne greške.
- Čitljivost i održivost: Kod postaje jasniji, jer je jasno sa kojim tipovima komponenta radi.
Generici se često koriste u bibliotekama i okvirima, kao što su React (za tipiziranje propsova komponenti), Redux (za tipiziranje store-a), kao i pri radu sa kolekcijama podataka.