--verbatimModuleSyntax

TypeScript 🟡 Mid

Définition

Option introduite en TypeScript 5.0 (16 mars 2023) : les imports et exports sont conservés tels qu'écrits, et seuls ceux marqués type sont supprimés. Fini l'élision implicite des imports « probablement de type » : le code émis est prévisible, ce qui est indispensable aux transpileurs fichier par fichier et au type stripping de Node.js, qui la recommande avec erasableSyntaxOnly.

Analogie

Le traducteur qui rend chaque phrase mot pour mot au lieu de décider ce qui « ne sert à rien ».

Exemple de code

// tsconfig.json : { "compilerOptions": { "verbatimModuleSyntax": true } }

import type { Utilisateur } from './types.ts';  // effacé
import { type Role, charger } from './api.ts'; // Role effacé, charger gardé

// ❌ Erreur : Utilisateur est un type, il faut `import type`
// import { Utilisateur } from './types.ts';

export type { Utilisateur };

Cas d'usage

Projets ESM modernes, bibliothèques, exécution directe par Node/Bun/Deno, builds Vite/esbuild/Oxc.

Anti-pattern

Le combiner avec des imports CommonJS déguisés (import x = require) sous module esnext : erreur de compilation.
#tooling#ts5#modules

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre