TypeScript Omit: guida con esempi pratici

TypeScript Omit: Guida con esempi pratici

TypeScript Omit è uno degli strumenti più potenti messi a disposizione da TypeScript per creare tipi personalizzati, migliorando leggibilità e manutenibilità del codice. In questo articolo scoprirai cos’è esattamente TypeScript Omit, come si usa nella pratica e quando può semplificarti davvero il lavoro con esempi chiari e semplici.

Cos’è TypeScript Omit?

Omit<Type, Keys> è una utility type che permette di creare un nuovo tipo partendo da un tipo esistente, escludendo però alcune delle sue proprietà.

Sintassi base:

type NuovoTipo = Omit<TipoOriginale, 'ProprietàDaEscludere'>;

Esempio pratico base

Considera questo esempio di un’interfaccia Prodotto:

interface Prodotto {
  id: number;
  nome: string;
  prezzo: number;
  categoria: string;
}

Se vuoi creare un nuovo tipo senza il campo categoria, pui fare così:

type ProdottoSemplificato = Omit<Prodotto, 'categoria'>;

const prodotto: ProdottoSemplificato = {
  id: 1,
  nome: 'Smartphone',
  prezzo: 299
};

console.log(prodotto);
// Output: { id: 1, nome: 'Smartphone', prezzo: 299 }

In questo modo, categoria non è più inclusa nel tipo.

Escludere più proprietà contemporaneamente

Spesso potresti dover rimuovere più campi da un tipo. Ecco come farlo facilmente con Omit:

interface Utente {
  id: number;
  username: string;
  email: string;
  password: string;
}

type UtentePubblico = Omit<Utente, 'email' | 'password'>;

const utentePubblico: UtentePubblico = {
  id: 5,
  username: 'Marco1988'
};

console.log(utentePubblico);
// Output: { id: 5, username: 'Marco1988' }

Qui, escludendo email e password, hai creato un tipo che protegge automaticamente i dati sensibili.

Caso d’uso avanzato con Omit e funzioni

Immagina di avere una funzione che restituisce le informazioni di un dipendente, escludendo alcune proprietà private:

interface Dipendente {
  id: number;
  nome: string;
  cognome: string;
  stipendio: number;
  iban: string;
}

type DipendentePubblico = Omit<Dipendente, 'stipendio' | 'iban'>;

function mostraDipendente(dipendente: Dipendente): DipendentePubblico {
  const { stipendio, iban, ...datiPubblici } = dipendente;
  return datiPubblici;
}

const dipendente: Dipendente = {
  id: 10,
  nome: 'Luca',
  cognome: 'Rossi',
  stipendio: 2500,
  iban: 'IT60X0542811101000000123456'
};

console.log(mostraDipendente(dipendente));
// Output: { id: 10, nome: 'Luca', cognome: 'Rossi' }

Con questo approccio eviti automaticamente di esporre dati riservati o sensibili.

Combinare TypeScript Omit con altri Utility Types

Omit può essere combinato con altre utility per ottenere maggiore flessibilità. Ad esempio, per creare un tipo con campi opzionali tranne uno obbligatorio:

interface Evento {
  titolo: string;
  descrizione: string;
  data: Date;
  luogo: string;
}

type EventoFlessibile = Partial<Omit<Evento, 'titolo'>> & { titolo: string };

const evento: EventoFlessibile = {
  titolo: 'Concerto Jazz'
  // gli altri campi sono opzionali
};

console.log(evento);
// Output: { titolo: 'Concerto Jazz' }

Qui hai definito che solo il titolo è obbligatorio, mentre le altre proprietà restano opzionali.

Conclusione

TypeScript Omit è uno strumento indispensabile per scrivere codice pulito, sicuro e leggibile, permettendoti di gestire facilmente la visibilità e la sicurezza dei dati.

Per ulteriori dettagli, puoi consultare la documentazione ufficiale di TypeScript.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto