NoInfer<T>
TypeScript 🟡 MidDéfinition
Type utilitaire intrinsèque ajouté en TypeScript 5.4 (6 mars 2024). Envelopper un paramètre dans NoInfer<T> l'exclut des candidats à l'inférence de T : le type générique est alors déduit uniquement des autres arguments, et l'argument marqué est simplement vérifié contre lui.
Analogie
Dans un jury, le témoin qui n'a pas le droit de vote mais doit quand même respecter le verdict.
Exemple de code
function feu<C extends string>(couleurs: C[], defaut?: NoInfer<C>) {}
feu(['rouge', 'vert'], 'rouge'); // OK
feu(['rouge', 'vert'], 'bleu');
// ❌ 'bleu' n'est pas assignable à 'rouge' | 'vert'
// Sans NoInfer, C serait inféré 'rouge' | 'vert' | 'bleu' : pas d'erreur
Cas d'usage
Fonctions où un argument « valeur par défaut » ou « clé » doit appartenir à un ensemble déduit d'un autre argument.
Anti-pattern
Simuler NoInfer avec des astuces du type C & {} ou des tuples : moins lisible et fragile entre versions.
Termes liés
Fiche mise à jour le 2026-09-27