const assertion (as const)

TypeScript 🟡 Mid

Définition

Assertion qui empêche le widening et rend toutes les propriétés readonly et les valeurs littérâles. Transforme un objet/tableau en version profondément immutable.

Analogie

Comme graver dans le marbre — une fois écrit, chaque détail est fige exactement tel quel.

Exemple de code

const config = {
  api: "https://api.com",
  retries: 3
} as const;
// type: { readonly api: "https://api.com"; readonly retries: 3 }

Cas d'usage

Créer des constantes avec des types littéraux exacts pour les discriminated unions et les lookups.

Anti-pattern

Oublier as const sur des tableaux utilises comme union — ["a", "b"] donne string[] au lieu de readonly ["a", "b"].
#core#interview#best-practice

En entretien

  1. Explique-moi ce que fait `as const` sur un objet ou un tableau.

    Ça empêche le widening et rend toutes les propriétés readonly avec des types littéraux exacts, transformant l'objet ou le tableau en version profondément immutable.

  2. Quel est le piège classique quand on veut utiliser un tableau comme union de littéraux ?

    Si on oublie `as const`, `["a", "b"]` est inféré en `string[]` au lieu de `readonly ["a", "b"]`, donc on perd les types littéraux attendus.

  3. Dans quel cas utiliserais-tu concrètement `as const` ?

    Pour créer des constantes avec des types littéraux exacts, utiles pour les discriminated unions et les lookups typés.

Fiche mise à jour le 2026-09-27

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