Le fichier TypeScript .ts ne fonctionne pas ? Solution à l'erreur "Unknown file extension"

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : "Votre fichier .ts ne s'ouvre pas ? Vous n'êtes pas seul"

\n\n

Imaginez : vous écrivez du code génial en TypeScript, vous enregistrez le fichier avec l'extension .ts, vous exécutez la commande node myfile.ts... et vous obtenez en réponse quelque chose comme : "Unknown file extension ".ts". Familier ? Si vous avez jeté un œil sur Stack Overflow, vous savez que cette question a rassemblé des milliers de vues et des centaines de commentaires. Le problème est ancien, mais toujours d'actualité.

\n\n

Dans cet article, nous ne nous contenterons pas de copier une réponse de forum. Nous allons analyser pourquoi cela se produit, comment le corriger, et que faire pour ne plus jamais rencontrer cette erreur. Vous apprendrez à configurer correctement un projet TypeScript, à utiliser ts-node et la configuration tsconfig.json. C'est parti !

\n\n

Pourquoi l'erreur "Unknown file extension ".ts" se produit-elle ?

\n\n

Allons droit au but. Node.js ne comprend pas les fichiers .ts par défaut. Il ne connaît que .js, .json, .mjs et .cjs. Lorsque vous écrivez node myfile.ts, Node.js essaie honnêtement d'exécuter le code TypeScript comme du JavaScript ordinaire, mais se heurte à une syntaxe qui lui est inconnue (par exemple, les types, les interfaces, les génériques).

\n\n

Le résultat : une erreur. Mais il existe une autre situation : vous utilisez ts-node ou tsx, mais vous voyez toujours le même message. Pourquoi ? Parce que dans les versions modernes de Node.js (à partir de la version 16), une vérification stricte des extensions a été ajoutée dans package.json, surtout lorsque "type": "module" est défini.

\n\n

Causes principales :

\n
    \n
  • Exécution directe de node file.ts — Node.js ne sait pas compiler TypeScript à la volée.
  • \n
  • Absence de ts-node ou tsx — aucun outil de transpilation.
  • \n
  • Configuration incorrecte de tsconfig.json — par exemple, module ou target non spécifié.
  • \n
  • Problèmes avec package.json — si "type": "module" est défini, ts-node peut exiger une indication explicite de l'extension.
  • \n
\n\n

Solution 1 : Utiliser ts-node (méthode classique)

\n\n

La façon la plus simple d'exécuter TypeScript sans compilation préalable est d'utiliser ts-node. C'est un package qui compile les fichiers .ts en mémoire et transmet le résultat à Node.js.

\n\n

Installation et exécution

\n
npm install -g ts-node\nts-node myfile.ts
\n\n

Si vous utilisez un projet local, il est préférable de l'installer comme dépendance de développement :

\n
npm install --save-dev ts-node\nnpx ts-node myfile.ts
\n\n

Exemple d'un fichier simple hello.ts :

\n
const greet = (name: string): string => {\n    return `Bonjour, ${name}!`;\n};\n\nconsole.log(greet("Monde"));
\n\n

Exécutez : npx ts-node hello.ts — et vous voyez dans la console "Bonjour, Monde!". Ça marche !

\n\n

Mais il y a un hic : "type": "module"

\n

Si dans votre package.json est spécifié "type": "module", alors ts-node peut refuser de fonctionner. Dans ce cas, vous devez soit supprimer temporairement cette ligne, soit utiliser le drapeau --esm :

\n
npx ts-node --esm myfile.ts
\n\n

Solution 2 : Utiliser tsx (outil moderne)

\n\n

tsx est une alternative plus rapide à ts-node, basée sur esbuild. Elle fonctionne avec ESM dès le départ et ne nécessite pas de drapeaux supplémentaires.

\n\n

Installation :

\n
npm install --save-dev tsx
\n\n

Exécution :

\n
npx tsx myfile.ts
\n\n

Exemple utilisant les fonctionnalités modernes de TypeScript :

\n
// types.ts\nexport interface User {\n    id: number;\n    name: string;\n    email: string;\n}\n\nconst user                

Blogs

Book Recommendations