Cos'è TypeScript e cosa aggiunge a JavaScript
TypeScript è un superset di JavaScript — ogni file JavaScript valido è anche TypeScript valido. La differenza principale è un sistema di tipi statici: puoi dichiarare esplicitamente il tipo delle variabili, dei parametri delle funzioni, e dei valori di ritorno, e il compilatore verifica che il codice rispetti quelle dichiarazioni prima ancora di eseguirlo.
function somma(a: number, b: number): number {
return a + b
}
somma(1, 2)
somma(1, "due")L'ultima riga produce un errore a compile time — non a runtime, non in produzione, non dopo che l'utente ha già visto qualcosa di sbagliato. Il compilatore ti avvisa prima.
TypeScript non cambia come JavaScript funziona nel browser o in Node.js — viene compilato in JavaScript standard e sparisce a runtime. Quello che aggiunge è un layer di verifica statica durante lo sviluppo.

TypeScript vs JavaScript: le differenze concrete
La differenza non è solo sintattica. Cambia il modo in cui scrivi e mantieni il codice.
Errori a compile time invece che a runtime
In JavaScript, molti errori emergono solo quando il codice viene eseguito — spesso in produzione, spesso da un utente. TypeScript sposta quella verifica prima: l'editor ti sottolinea il problema mentre scrivi, non dopo il deploy.
Autocompletamento intelligente
Con i tipi dichiarati, l'editor sa esattamente cosa contiene un oggetto e quali metodi ha. L'autocompletamento diventa preciso e contestuale — non suggerisce tutte le proprietà possibili, suggerisce quelle che esistono davvero su quell'oggetto specifico. Su progetti con molte API o strutture dati complesse, questo da solo vale il costo di adozione.
Refactoring sicuro
Rinominare una funzione o cambiare la firma di un metodo in JavaScript richiede di trovare manualmente tutti i punti in cui viene usato. In TypeScript, il compilatore ti dice immediatamente quali file smettono di compilare — e l'IDE può rinominare tutto automaticamente con certezza che non rompe nulla di nascosto.
Documentazione vivente
I tipi sono documentazione che non può diventare obsoleta — se il codice cambia, i tipi devono cambiare con lui o non compila. Un'interfaccia TypeScript descrive esattamente la forma di un oggetto, e quella descrizione è sempre aggiornata per definizione.
I vantaggi reali su progetti piccoli
Qui c'è il malinteso più comune: TypeScript viene percepito come uno strumento per team grandi, con basi di codice enormi, dove la comunicazione tra sviluppatori richiede contratti espliciti.
Non è così. I vantaggi emergono anche su progetti piccoli — e in certi casi proprio lì sono più evidenti.
Un progetto piccolo mantenuto da una persona sola ha un problema specifico: la memoria. Tra sei mesi non ricordi come era fatta quella funzione, cosa si aspettava come input, cosa restituiva. I tipi sono la nota che ti lasci — e che non puoi dimenticare di aggiornare.
Un progetto piccolo che cresce ha un altro problema: il refactoring. Aggiungere una feature su codice non tipizzato richiede di capire ogni pezzo prima di toccarlo. Con TypeScript, il compilatore fa quella verifica al posto tuo — ti dice cosa rompe e dove.
Il momento in cui TypeScript paga di meno è il prototipo usa-e-getta che non diventerà mai produzione. Se sai con certezza che il codice vivrà pochi giorni, il costo di setup supera il beneficio. Per tutto il resto, il bilancio è positivo prima di quanto si pensi.
Gli svantaggi onesti
TypeScript non è gratis. Vale la pena essere chiari su cosa costa.
La configurazione iniziale
tsconfig.json ha decine di opzioni, e le configurazioni online si contraddicono. Per chi parte da zero, capire cosa abilitare e cosa no richiede tempo. La buona notizia è che framework come Next.js e Vite lo configurano automaticamente — se usi questi strumenti, il problema è già risolto.
La curva di apprendimento dei tipi generici
I tipi semplici (string, number, boolean) si imparano in un'ora. I generici — Array
Il "type gymnastics"
A volte si finisce a scrivere tipi molto complessi per soddisfare il compilatore, quando la soluzione più semplice sarebbe as any. Cedere troppo spesso a as any nega i benefici di TypeScript. Resistere richiede disciplina e conoscenza.
La compilation step
TypeScript deve essere compilato prima di essere eseguito. Nella maggior parte dei workflow moderni questo è trasparente (Vite, Next.js, tsx), ma aggiunge un passaggio al processo di sviluppo.
Come iniziare senza riscrivere tutto da zero
La cosa migliore di TypeScript è che puoi adottarlo gradualmente — non serve riscrivere nulla.
Su un progetto nuovo
Parti direttamente con TypeScript. Se usi Next.js, è già configurato con create-next-app. Per altri progetti, npm install -D typescript @types/node e un tsconfig.json base sono sufficienti per iniziare.
Su un progetto JavaScript esistente
Rinomina i file da .js a .ts uno alla volta. Inizia con i moduli più stabili e meno critici. Aggiungi "strict": false nel tsconfig.json inizialmente — ti permette di adottare TypeScript senza dover tipizzare tutto subito. Alza gradualmente la severità man mano che il codice viene tipizzato.
La strategia dei tipi progressivi
Inizia con i tipi espliciti solo sulle funzioni pubbliche — input e output. L'interno può restare con type inference automatica. Aggiungi le interfacce per le strutture dati principali. Affronta i generici solo quando servono davvero.
TypeScript e Next.js: già integrati
Se stai già usando Next.js — come nel caso di ekulos.com — TypeScript è già lì. create-next-app lo configura di default, e tutto il framework è scritto in TypeScript con tipi completi.
I componenti React in TypeScript definiscono esplicitamente le props:
interface ArticleCardProps {
title: string
date: string
category: string
readTime: number
slug: string
}
export default function ArticleCard({ title, date, category, readTime, slug }: ArticleCardProps) {
return (
<article>
<h2>{title}</h2>
<span>{category} · {readTime} min</span>
</article>
)
}Se passi una prop sbagliata — un numero dove si aspetta una stringa, una prop mancante — il compilatore te lo dice prima che il componente venga renderizzato. Su un blog con molti componenti e molte pagine, questo tipo di verifica evita una categoria intera di bug.
Vale la pena nel 2026?
Sì — con una condizione: se il progetto durerà più di qualche settimana.
Il costo di adozione di TypeScript si è ridotto enormemente negli ultimi anni. I framework moderni lo includono per default, l'editor lo supporta nativamente, e la community ha prodotto tipi per quasi ogni libreria JavaScript esistente tramite DefinitelyTyped.
Il beneficio — errori trovati prima, refactoring sicuro, documentazione sempre aggiornata — emerge rapidamente, anche su progetti piccoli. Non è uno strumento solo per team grandi. È uno strumento per codice che deve sopravvivere nel tempo.