Sobes.tech
Middle

Cosa sono i generici?

sobes.tech AI

Risposta dell'AI

I generici in TypeScript consentono di creare componenti (funzioni, classi, interfacce) che possono lavorare con diversi tipi di dati, mantenendo la sicurezza dei tipi. Permettono di scrivere codice più flessibile e riutilizzabile, senza perdere i vantaggi della tipizzazione statica. L'esempio più semplice è l'uso dei generici nelle funzioni per restituire lo stesso tipo passato come argomento.

// Funzione che accetta un argomento di qualsiasi tipo e lo restituisce
function identity<T>(arg: T): T {
    return arg;
}

// Uso del generico con un tipo specifico - string
let outputString = identity<string>("stringa"); // Il tipo di outputString sarà string

// Uso del generico con inferenza automatica del tipo - number
let outputNumber = identity(123); // Il tipo di outputNumber sarà number

I generici possono essere usati anche nelle classi:

// Classe che lavora con elementi di qualsiasi tipo
class GenericBox<T> {
    value: T;
    constructor(initialValue: T) {
        this.value = initialValue;
    }
}

// Creazione di un'istanza di GenericBox con tipo string
let stringBox = new GenericBox<string>("ciao");
// Creazione di un'istanza di GenericBox con tipo boolean
let booleanBox = new GenericBox(true); // TypeScript inferirà il tipo

E nelle interfacce:

// Interfaccia con generico
interface KeyValuePair<K, V> {
    key: K;
    value: V;
}

// Uso dell'interfaccia con tipi specifici
let stringNumberPair: KeyValuePair<string, number> = { key: "età", value: 30 };

Vantaggi dell'uso dei generici:

  • Riutilizzo del codice: Una struttura può essere usata con diversi tipi di dati.
  • Sicurezza dei tipi: Il compilatore verifica i tipi durante la compilazione, prevenendo potenziali errori.
  • Leggibilità e manutenibilità: Il codice diventa più comprensibile, poiché si vede chiaramente con quali tipi lavora il componente.

I generici sono spesso usati in librerie e framework, come React (per tipizzare le props dei componenti), Redux (per tipizzare lo store), e anche quando si lavora con collezioni di dati.