Enum vs const Enum vs Union
TypeScript 🟡 MidDéfinition
Trois façons de modéliser un ensemble fini: enum (objet runtime), const enum (inline a la compilation, efface), union de littéraux (zéro runtime). Chacune avec ses compromis.
Analogie
Enum: un panneau permanent. Const enum: un post-it qu'on retire après lecture. Union: une règle orale connue de tous.
Exemple de code
enum Dir { Up, Down } // objet JS emis
const enum Fast { A, B } // inline, pas d'objet
type Clean = "up" | "down"; // zero runtime
Cas d'usage
Préférer les unions de littéraux pour la légèreté. Enum pour l'itération. Const enum pour la performance (avec précaution).
Anti-pattern
Termes liés
En entretien
Quelle différence entre enum, const enum et union de littéraux ?
enum génère un objet JS à l'exécution, const enum est inliné à la compilation et disparaît, tandis qu'une union de littéraux ne génère aucun code runtime.
Quel est le piège des enums numériques ?
Sans valeur explicite, l'ajout d'un nouveau membre décale les valeurs numériques et casse les valeurs déjà persistées.
Que choisirais-tu par défaut entre les trois, et pourquoi ?
Les unions de littéraux pour la légèreté au quotidien, enum quand il faut itérer sur les valeurs, et const enum pour la performance mais avec précaution.
Fiche mise à jour le 2026-09-27