Node JS e Typescript
TypeScript è un linguaggio open-source alla moda mantenuto e sviluppato da Microsoft. È amato e utilizzato da molti sviluppatori di software in tutto il mondo.
Fondamentalmente, è un superset di JavaScript che aggiunge nuove capacità al linguaggio. L’aggiunta più nota è la definizione statica dei tipi, qualcosa che non è presente in JavaScript puro. Grazie ai tipi, è possibile, ad esempio, dichiarare il tipo di argomenti che ci si aspetta e cosa restituirà esattamente nelle nostre funzioni o qual è la forma esatta dell’oggetto che stiamo creando. TypeScript è uno strumento davvero potente e apre un nuovo mondo di possibilità nei progetti JavaScript. Rende il nostro codice più sicuro e robusto, prevenendo molti bug prima che il codice venga anche distribuito: individua i problemi durante lo sviluppo del codice e si integra meravigliosamente con gli editor di codice come Visual Studio Code.
Possiamo parlare degli altri vantaggi di TypeScript in seguito, vediamo ora alcuni esempi!
Esempio
Dai un’occhiata a questo frammento di codice e poi possiamo esaminarlo insieme:
type User = { name: string; age: number;};
function isAdult(user: User): boolean { return user.age >= 18;}
const justine: User = { name: "Justine", age: 23,};
const isJustineAnAdult: boolean = isAdult(justine);
La prima parte (con la parola chiave type
) si occupa di dichiarare il nostro tipo di oggetto personalizzato che rappresenta gli utenti. Successivamente utilizziamo questo tipo appena creato per creare la funzione isAdult
che accetta un argomento di tipo User
e restituisce un boolean
. Dopodiché creiamo justine
, il nostro esempio di dati che può essere utilizzato per chiamare la funzione precedentemente definita. Infine, creiamo una nuova variabile con informazioni su se justine
è maggiorenne.
Ci sono cose aggiuntive riguardo a questo esempio che dovresti conoscere. In primo luogo, se non rispettassimo i tipi dichiarati, TypeScript ci avviserebbe che qualcosa non va e impedirebbe l’abuso. In secondo luogo, non tutto deve essere dichiarato esplicitamente: TypeScript è molto intelligente e può dedurre i tipi per noi. Ad esempio, la variabile isJustineAnAdult
sarebbe di tipo boolean
anche se non l’avessimo dichiarata esplicitamente o justine
sarebbe un argomento valido per la nostra funzione anche se non avessimo dichiarato questa variabile come di tipo User
.
Bene, ora abbiamo del codice TypeScript. Come lo eseguiamo?
La prima cosa da fare è installare TypeScript nel nostro progetto:
npm i -D typescript
Ora possiamo compilarlo in JavaScript usando il comando tsc
nel terminale. Facciamolo!
Supponendo che il nostro file si chiami esempio.ts
, il comando sarebbe simile a:
npx tsc esempio.ts
npx qui sta per Node Package Execute. Questo strumento ci consente di eseguire il compilatore TypeScript senza installarlo globalmente.
tsc
è il compilatore TypeScript che prenderà il nostro codice TypeScript e lo compilerà in JavaScript. Questo comando comporterà la creazione di un nuovo file chiamato esempio.js
che possiamo eseguire usando Node.js. Ora che sappiamo come compilare ed eseguire il codice TypeScript, vediamo le capacità di prevenzione degli errori di TypeScript in azione!
Ecco come modificheremo il nostro codice:
type User = { name: string; age: number;};
function isAdult(user: User): boolean { return user.age >= 18;}
const justine: User = { name: "Justine", age: "Segreto!",};
const isJustineAnAdult: string = isAdult(justine, "Non dovrei essere qui!");
Ed ecco cosa TypeScript ha da dire a riguardo:
esempio.ts:12:3 - errore TS2322: Il tipo 'string' non è assegnabile al tipo 'number'.
12 age: "Secret!", ~~~
esempio.ts:3:3 3 age: number; ~~~ Il tipo previsto proviene dalla proprietà 'age' che è dichiarata qui sul tipo 'User'
esempio.ts:15:7 - errore TS2322: Il tipo 'boolean' non è assegnabile al tipo 'stringa'.
15 const isJustineAnAdult: string = isAdult(justine, "Non dovrei essere qui!"); ~~~~~~~~~~~~~~~~
esempio.ts:15:51 - errore TS2554: Previsti 1 argomenti, ma ne sono stati ottenuti 2.
15 const isJustineAnAdult: string = isAdult(justine, "Non dovrei essere qui!"); ~~~~~~~~~~~~~~~~~~~~~~
Trovati 3 errori.
Come puoi vedere, TypeScript ci impedisce con successo di distribuire codice che potrebbe funzionare in modo imprevisto. Fantastico!
Altro su TypeScript
TypeScript offre molte altre fantastiche funzionalità come interfacce, classi, tipi di utilità e così via. Inoltre, nei progetti più grandi puoi dichiarare la configurazione del tuo compilatore TypeScript in un file separato e regolare in modo granulare come funziona, quanto è rigoroso e dove archivia i file compilati, ad esempio.
Alcuni degli altri vantaggi di TypeScript che vale la pena menzionare sono che può essere adottato progressivamente, aiuta a rendere il codice più leggibile e comprensibile e consente agli sviluppatori di utilizzare funzionalità del linguaggio moderne mentre distribuiscono codice per versioni più vecchie di Node.js.
TypeScript nel mondo di Node.js
TypeScript è ben consolidato nel mondo di Node.js ed è utilizzato da molte aziende, progetti open-source, strumenti e framework. Alcuni degli esempi notevoli di progetti open-source che utilizzano TypeScript sono:
- NestJS - framework robusto e completo che semplifica la creazione di sistemi scalabili e ben strutturati
- TypeORM - ottimo ORM influenzato da altri strumenti ben noti di altri linguaggi come Hibernate, Doctrine o Entity Framework
- Prisma - ORM di nuova generazione con un modello dati dichiarativo, migrazioni generate e query al database completamente sicure dal punto di vista dei tipi
- RxJS - libreria ampiamente utilizzata per la programmazione reattiva
- AdonisJS - Un framework web completo con Node.js
- FoalTs - L’elegante framework Node.js