Mi a generikus?
sobes.tech MI
Válasz az MI-től
A TypeScript generikusok lehetővé teszik olyan komponensek (függvények, osztályok, interfészek) létrehozását, amelyek különböző adattípusokkal működhetnek, miközben megőrzik a típusbiztonságot. Ezek lehetővé teszik rugalmasabb és újrahasznosítható kód írását anélkül, hogy elveszítenénk a statikus típusellenőrzés előnyeit. A legegyszerűbb példa a generikusok használata függvényekben, hogy ugyanazt a típust adják vissza, mint amit argumentumként adtak meg.
// Függvény, amely bármilyen típusú argumentumot fogad és visszaadja
function identity<T>(arg: T): T {
return arg;
}
// Generikus használata konkrét típussal - string
let outputString = identity<string>("szöveg"); // Az outputString típusa string lesz
// Generikus használata automatikus típuskinyeréssel - number
let outputNumber = identity(123); // Az outputNumber típusa number lesz
A generikusokat osztályokban is lehet használni:
// Osztály, amely bármilyen típusú elemekkel dolgozik
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Példa egy string típusú GenericBox példány létrehozására
let stringBox = new GenericBox<string>("szia");
// Példa egy boolean típusú GenericBox példány létrehozására
let booleanBox = new GenericBox(true); // A TypeScript kitalálja a típust
És interfészekben:
// Generikus interfész
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Konkrét típusokkal való használat
let stringNumberPair: KeyValuePair<string, number> = { key: "kor", value: 30 };
A generikusok használatának előnyei:
- Kód újrahasznosítása: Egy szerkezet különböző típusú adatokkal használható.
- Típusbiztonság: A fordító ellenőrzi a típusokat fordítás közben, megelőzve a potenciális hibákat.
- Átláthatóság és karbantarthatóság: A kód könnyebben érthető, mivel egyértelmű, hogy a komponens milyen típusokkal dolgozik.
A generikusokat gyakran használják könyvtárakban és keretrendszerekben, például a React-ben (a komponensek propjainak típusozására), a Reduxban (a store típusozására), valamint adatgyűjteményekkel való munkánál.