
GUIDE PER ASPIRANTI PROGRAMMATORI
Oggetti in Typescript
Nel linguaggio JavaScript, praticamente ogni cosa è un oggetto ad eccezione dei tipi primitivi. Un oggetto è, fondamentalmente, una collezione di coppie chiave/valore (in inglese: key/value pair); in informatica, una simile struttura di dati è spesso chiamata mappa, dizionario o record. Non confondiamo il fatto che un oggetto risponda alla definizione di mappa con la…


Vuoi avviare una nuova carriera o fare un upgrade?
Trova il corso Digital & Tech più adatto a te nel nostro catalogo!
- Tipi primitivi in Typescript
- Tipi letterali in Typescript
- Null e undefined in Typescript
- Tipi enumerativi in Typescript
- Oggetti in Typescript
- Array e tuple in Typescript
- Funzioni in Typescript
- Guardie di tipo in Typescript
- Any vs unknown in Typescript
- Tipi algebrici in Typescript
- Parametri di tipo in Typescript
- Manipolazione di tipi in Typescript
- Tipi utility in Typescript
Nel linguaggio JavaScript, praticamente ogni cosa è un oggetto ad eccezione dei tipi primitivi. Un oggetto è, fondamentalmente, una collezione di coppie chiave/valore (in inglese: key/value pair); in informatica, una simile struttura di dati è spesso chiamata mappa, dizionario o record.
Non confondiamo il fatto che un oggetto risponda alla definizione di mappa con la classe JavaScript Map che implementa, per l’appunto, una mappa, ed è nato appositamente per gestire casi d’uso dove un oggetto potrebbe anche andare bene, ma risulterebbe limitante o non ottimizzato per lo scopo. In questa guida non parliamo di Map.
Il caso d’uso più frequente per gli oggetti in JavaScript sta nell’aggregare informazioni in delle proprietà; il modo più facile per rappresentare le proprietà di un oggetto è attraverso un object literal type:
const user: { name: string, email: string } = { name: "John Doe", email: "[email protected]" };
In questo caso abbiamo rappresentato il tipo di user con una notazione analoga a quella con cui gli abbiamo assegnato le sue proprietà. Poiché il tipo di user non ha un nome, si dice che è anonimo.
Se volessimo dare un nome al tipo di user, ad esempio User (senza troppa fantasia), possiamo farlo in due modi: o assegnando un type alias alla notazione letterale anonima, oppure dichiarando un’interfaccia:
// alias di tipo type User = { name: string, email: string, }; // interfaccia interface User { name: string; email: string; }
Sia nella notazione anonima sia in un’interfaccia, la virgola e il punto e virgola per separare le proprietà sono intercambiabili e anzi, addirittura facoltativi, se le proprietà sono poste su righe separate.
Poiché esiste un’ampia sovrapposizione tra type e interface, è il caso di chiedersi quali sono i casi d’uso più appropriati per l’una e per l’altra dichiarazione.
In generale, interface è il modo ufficialmente raccomandato per dichiarare la struttura di un oggetto; è altresì vero che con le interfacce possiamo rappresentare anche array, funzioni e costruttori, che a rigore per il linguaggio JavaScript non sono altro che oggetti con particolari caratteristiche. Anche se non siamo abituati a concepire tutti questi tipi di dato come oggetti, usando un’interfaccia per rappresentarli, stiamo ufficializzando quella data struttura come un tipo vero e proprio con un suo nome e una collocazione ben precisa nel type system.
Con type, invece, possiamo mettere qualsiasi tipo o combinazione di tipi dietro a un alias, più o meno allo stesso modo in cui a runtime possiamo mettere in una costante qualsiasi valore risultante da un’espressione; possiamo assegnare un alias ad un tipo primitivo tanto quanto ad un oggetto, a un array o a una qualunque combinazione di tipi, e TypeScript non farà altro che rimpiazzare quell’alias con la sua definizione. Il team di TypeScript raccomanda di usare type quando si vuole dare un nome a una combinazione complessa di tipi non rappresentabile con un’interfaccia.
Esistono altre differenze tra alias e interfacce che vedremo man mano che esploriamo il type system. In fondo alla guida vedremo anche come i due approcci alla definizione dei tipi siano in realtà più o meno preferibili in base allo stile di programmazione adottato.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.