Generic Constraint (extends)

TypeScript 🟡 Mid

Définition

Restriction appliquée a un paramètre générique via extends pour garantir qu'il possède certaines propriétés. Limite les types acceptables.

Analogie

Comme un casting de film — tout le monde peut postuler, mais il faut au minimum savoir chanter.

Exemple de code

function getLength<T extends { length: number }>(x: T) {
  return x.length;
}
getLength("hello"); // OK
getLength([1, 2]);  // OK
// getLength(42);   // Erreur: pas de length

Cas d'usage

Garantir qu'un générique possède les propriétés nécessaires avant de les utiliser.

Anti-pattern

Contraindre trop largement (extends object) ou pas assez — soit trop restrictif, soit pas assez sur.
#core#interview#generics

En entretien

  1. Explique-moi ce qu'apporte `extends` sur un générique.

    Ça restreint le paramètre générique pour garantir qu'il possède certaines propriétés, comme dans `<T extends { length: number }>`.

  2. Quel est le piège dans le choix de la contrainte ?

    Contraindre trop largement, comme `extends object`, ou pas assez, rend le générique soit trop restrictif soit pas assez sûr.

  3. Donne un exemple d'usage concret d'une contrainte générique.

    Garantir qu'un générique possède les propriétés nécessaires avant de les utiliser, comme `getLength` qui exige une propriété `length`.

Fiche mise à jour le 2026-09-27

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