Aller au contenu

TypeScript et NodeJS - La blague de la gestion des extensions

Problème

Pour utiliser dans src/main.ts une fonction hello() exportée dans src/utils.ts :

// KO : Les extensions ne doivent pas être spécifiée en TypeScript :
// import {hello} from './utils.ts';

/*
 * KO avec NodeJS car :
 * - tsc n'ajoute pas l'extension .js
 * - nodejs ne résoud pas si l'extension n'est pas spécifiée. 
 */
// import {hello} from 'utils'

/*
 * C'est moche mais "node dist/main.js" fonctionne
 * après transpilation avec tsc :
 */
import {hello} from 'utils.js'
hello();

Ressources