Oggetti in Typescript | Aulab
TECH SUMMER LAB 🚀 Open Month
| 6 lezioni gratuite per orientarti al meglio e iniziare a costruire il tuo futuro digitale! Iscriviti gratis

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…

Lezione 18 / 30
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

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.

Hai bisogno di informazioni? 🙋🏻‍♂️

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626