Inferred Type Predicates
TypeScript 🟡 MidDéfinition
Depuis TypeScript 5.5 (20 juin 2024), le compilateur infère lui-même le prédicat de type (x is T) d'une fonction dont le corps se réduit à une vérification de type sur son paramètre. Le cas emblématique : arr.filter(x => x !== undefined) renvoie désormais T[] et non (T | undefined)[], sans annotation manuelle.
Analogie
Le videur qui, en vous voyant sortir la carte d'identité, comprend tout seul ce qu'il vérifie.
Exemple de code
const valeurs: (number | undefined)[] = [1, undefined, 3];
// TS 5.5 : inféré comme (x) => x is number
const nombres = valeurs.filter(x => x !== undefined);
nombres.map(n => n.toFixed(1)); // n: number, plus d'erreur
// Fonction nommée : signature inférée `pet is Fish`
function estPoisson(p: Fish | Bird) {
return 'swim' in p;
}
Cas d'usage
Filtrage de tableaux, nettoyage de valeurs nulles, découpage d'unions sans écrire de type guard explicite.
Anti-pattern
Continuer à écrire des prédicats manuels partout : ils masquent l'inférence et risquent d'être faux (le compilateur les croit).
Termes liés
Fiche mise à jour le 2026-09-27