Middle
Ce sunt genericele?
sobes.tech AI
Răspuns de la AI
Generice în TypeScript permit crearea de componente (funcții, clase, interfețe) care pot lucra cu diferite tipuri de date, păstrând în același timp siguranța tipurilor. Ele permit scrierea unui cod mai flexibil și reutilizabil, fără a pierde avantajele tipizării statice. Cel mai simplu exemplu este utilizarea generics în funcții pentru a returna același tip ca și cel transmis ca argument.
// Funcție care acceptă un argument de orice tip și îl returnează
function identity<T>(arg: T): T {
return arg;
}
// Utilizarea unui generic cu un tip specific - string
let outputString = identity<string>("șir"); // Tipul lui outputString va fi string
// Utilizarea unui generic cu inferență automată a tipului - number
let outputNumber = identity(123); // Tipul lui outputNumber va fi number
Generics pot fi folosiți și în clase:
// Clasă care lucrează cu elemente de orice tip
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Crearea unei instanțe de GenericBox cu tip string
let stringBox = new GenericBox<string>("salut");
// Crearea unei instanțe de GenericBox cu tip boolean
let booleanBox = new GenericBox(true); // TypeScript va deduce tipul
Și în interfețe:
// Interfață cu generics
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Utilizarea interfeței cu tipuri specifice
let stringNumberPair: KeyValuePair<string, number> = { key: "vârstă", value: 30 };
Avantajele utilizării generics:
- Reutilizarea codului: O structură poate fi folosită cu diferite tipuri de date.
- Siguranța tipurilor: Compilatorul verifică tipurile în timpul compilării, prevenind erorile potențiale.
- Citibilitate și întreținere: Codul devine mai ușor de înțeles, deoarece se vede clar cu ce tipuri lucrează componenta.
Generics sunt frecvent folosiți în biblioteci și framework-uri, precum React (pentru tipizarea props-urilor componentelor), Redux (pentru tipizarea store-ului), precum și la lucrul cu colecții de date.