Gli sviluppatori di Node.JS hanno annunciato la disponibilità del supporto nativo per TypeScript nella versione 23.6. Tale novità consente di eseguire file TypeScript senza la necessità di configurazioni o flag aggiuntivi. Si tratta di una caratteristica già in fase sperimentale nella release 22.6 che ha raggiunto la stabilità in questa nuova versione e risponde a una delle richieste più frequenti da parte della community che ruota intorno al progetto.
Cosa si può fare grazie al supporto nativo per TypeScript in Node.JS
Grazie all'ultimo aggiornamento gli sviluppatori possono creare un file index.ts
ed eseguirlo semplicemente utilizzando il comando
node index.ts
Node.JS si occuperà automaticamente della rimozione delle annotazioni relative ai tipi. Il file sarà così convertito direttamente in codice JavaScript eseguibile. Tale approccio semplifica il flusso di lavoro ed elimina la necessità di passaggi intermedi come la compilazione manuale.
Le limitazioni della nuova funzionalità
Esistono però alcune limitazioni importanti. Node.JS ignora ad esempio i file di configurazione tsconfig.json
. Questo significa che le funzionalità avanzate che dipendono dalle impostazioni di questo file, come i percorsi personalizzati o la conversione di componenti sintattici JavaScript più recenti come i decorator, non sono supportate. A ciò si aggiunge il fatto che non è previsto neanche il supporto per i file JSX.
Node.JS esegue unicamente un'operazione di eliminazione dei tipi inline tramite type stripping, senza per questo generare nuovo codice JavaScript. Di conseguenza, alcune strutture TypeScript che richiedono appunto la generazione di codice JavaScript, come enum
, namespace con codice runtime, proprietà di parametri e alias negli import
restano escluse dal supporto nativo. La sintassi supportata viene definita non a caso come "erasable syntax" e la recente versione TypeScript 5.8 ha introdotto il flag --erasableSyntaxOnly
proprio per facilitare questa procedura.
Con l'introduzione del supporto nativo a TypeScript Node.js si avvicina maggiormente ai runtime alternativi che sono nativamente compatibili con TypeScript come Deno e Bun. Deno continua però ad offrire alcuni vantaggi come il supporto completo ai file tsconfig
e la possibilità di distribuire codice TypeScript senza trascrizioni.