TypeScript è un'estensione di JavaScript che realizza la tipizzazione statica (rigorosa). Ciò significa che il controllo dei tipi avviene durante la compilazione, e non in fase di esecuzione, come in JavaScript.
Principali differenze:
Vantaggi nei progetti di grandi dimensioni:
Esempio:
typ User = { name: string; age: number; } function greet(user: User): string { return 'Hello, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // Ok
Domanda: È possibile dichiarare una variabile di tipo any in un progetto TypeScript, e il progetto perderà i vantaggi della tipizzazione rigorosa?
Risposta:
Sì, TypeScript consente di utilizzare il tipo any, che è equivalente all'assenza di tipizzazione per quella variabile. Se si usa any frequentemente, questo annulla il principale vantaggio di TypeScript - la tipizzazione rigorosa, e si rischia di ottenere errori tipici di runtime, proprio come in JavaScript.
Esempio:
let data: any = 'test'; data = 42; // Non si presenterà un errore, ma potrebbe causare problemi
Storia
Uno sviluppatore usava spesso il tipo
anyper oggetti complessi, per "progredire più velocemente". Di conseguenza, un giorno è arrivato un oggetto con campi mancanti, e l'applicazione è andata in crash: l'errore è finito in produzione a causa della mancanza di controllo dei tipi.
Storia
In un grande progetto si scambiavano messaggi tra due microservizi diversi. Uno dei servizi ha cambiato la struttura dell'oggetto, ma TypeScript non ha avvisato di questo, poiché il tipo era stato esplicitamente definito come
any. Il bug è stato trovato dopo un mese a causa delle segnalazioni degli utenti.
Storia
Un giovane sviluppatore non ha descritto il tipo di valore restituito da una funzione pubblica, facendo affidamento sull'inferenza automatica del tipo. Dopo il refactoring, dall'altra parte sono cessate di funzionare le aspettative sui tipi, e si sono verificati una serie di bug in tutto il progetto.