Enum vs const Enum vs Union

TypeScript 🟡 Mid

Dé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

Utiliser des enums numériques sans valeur explicite — l'ajout d'un membre casse les valeurs persistees.
#core#interview#best-practice

En entretien

  1. 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.

  2. 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.

  3. 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

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