Inferred Type Predicates

TypeScript 🟡 Mid

Dé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).
#core#ts5.5#interview

Fiche mise à jour le 2026-09-27

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