Sobes.tech
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.