NoInfer<T>

TypeScript 🟡 Mid

Dé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.
#core#ts5.4#generics

Fiche mise à jour le 2026-09-27

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