Generic Constraint (extends)
TypeScript 🟡 MidDé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
Termes liés
En entretien
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 }>`.
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.
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