--erasableSyntaxOnly
TypeScript 🟡 MidDéfinition
Option introduite en TypeScript 5.8 (28 février 2025) qui interdit toute syntaxe TypeScript nécessitant une génération de code : enum, namespace contenant du code, propriétés de paramètre de constructeur, import x = require(). Elle garantit que le fichier peut être exécuté par simple effacement des types, comme le fait Node.js (type stripping, stable en 24.12.0 et 25.2.0). La documentation Node la recommande avec verbatimModuleSyntax.
Analogie
N'écrire qu'au crayon sur la copie : la gomme suffit pour retrouver le texte original.
Exemple de code
// tsconfig.json
// { "compilerOptions": { "erasableSyntaxOnly": true, "verbatimModuleSyntax": true } }
// ❌ Refusé : nécessite du code généré
enum Statut { Actif, Inactif }
class A { constructor(private x: number) {} }
// ✅ Effaçable
const Statut = { Actif: 0, Inactif: 1 } as const;
type Statut = (typeof Statut)[keyof typeof Statut];
class B { #x: number; constructor(x: number) { this.#x = x; } }
Cas d'usage
Tout projet exécuté par node fichier.ts, Bun ou Deno sans build, ou transpilé par un outil sans typechecker.
Anti-pattern
Activer le type stripping Node sans cette option : l'erreur ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX arrive à l'exécution, pas à la compilation.
Termes liés
Fiche mise à jour le 2026-09-27