TypeScript è un superset fortemente tipizzato di JavaScript che aggiunge il typing statico opzionale. È stato creato da Anders Hejlsberg nel 2012 e mantenuto da Microsoft come progetto open-source. TypeScript non è né un linguaggio interpretato né un linguaggio compilato in senso stretto.
Il codice TypeScript viene transpilato (cioè trasformato) in JavaScript nativo, così da poter essere eseguito in qualsiasi runtime JavaScript (ad esempio browser o Node.js). TypeScript supporta diversi paradigmi di programmazione, tra cui funzionale, generico, imperativo e orientato agli oggetti.
Essendo fortemente tipizzato, TypeScript aiuta a prevenire errori di programmazione prima dell’esecuzione, grazie al controllo statico dei tipi. Consente agli sviluppatori di esprimere vincoli e comportamenti sui dati, migliorando la correttezza e la manutenibilità del codice. È particolarmente utile in progetti di larga scala o di lunga durata.
TypeScript offre inoltre:
TypeScript non viene eseguito nativamente in alcun ambiente: deve essere prima transpilato in JavaScript per poter essere eseguito (ad esempio, nel browser). La transpilazione è il processo di conversione della sintassi di TypeScript in JavaScript compatibile con ambienti anche meno recenti. Per generare il codice JavaScript, TypeScript utilizza strumenti come tsc (TypeScript Compiler), che in realtà svolge il ruolo di transpiler.
Polyfilling è la tecnica che consente di integrare funzionalità mancanti previste da JavaScript moderno, colmando così alcune lacune di compatibilità in ambienti più vecchi.
// Esempio TypeScript
const sum = (a: number, b: number): number => a + b;
// Output transpilato in JavaScript (senza tipizzazione)
const sum = (a, b) => a + b;

TypeScript è definito come un “superset” di JavaScript: ciò significa che include tutto JavaScript e aggiunge al linguaggio nuove funzionalità, soprattutto la tipizzazione statica e altre estensioni. Per questo motivo, non si può considerare TypeScript un “sottoinsieme” di JavaScript, bensì un vero e proprio ampliamento di quest’ultimo.
Quando si scrive codice in TypeScript, l’output finale è comunque in JavaScript: la transpilazione produce il codice JavaScript che risulta eseguibile sia nei browser sia in ambienti runtime come Node.js. Nel caso di un backend, il codice TypeScript (una volta transpilato in JavaScript) potrà essere eseguito su un web server, piuttosto che all’interno di un browser.