Date de sortie : 20 juin 2024
Documentation officielle : Announcing TypeScript 5.5
TypeScript 5.5 rend le compilateur encore plus intelligent. Les type predicates sont maintenant inférés automatiquement — votre filter(x => x != null) retourne enfin le bon type. La vérification syntaxique des regex attrape les erreurs avant le runtime.

Les nouveautés principales
Type predicates inférés — le compilateur lit dans vos pensées
TypeScript infère automatiquement les type guards :
const numbers = [1, 2, null, 3, undefined, 4]; // Avant : filter retourne (number | null | undefined)[] const filtered = numbers.filter(x => x !== null && x !== undefined); // Après : TypeScript infère que c'est number[] // Car filter(x => ...) est reconnu comme type predicate
Fonctionne automatiquement pour les fonctions qui retournent un booléen basé sur une vérification de type.
Narrowing sur les accès indexés constants
Le narrowing fonctionne avec les accès par index :
function process(obj: Record<string, string | number>) {
const key = "status";
if (typeof obj[key] === "string") {
// obj[key] est maintenant string, pas string | number
console.log(obj[key].toUpperCase());
}
}
Vérification syntaxique des regex
TypeScript vérifie maintenant la syntaxe des expressions régulières :
// Erreur de compilation ! const re = /[a-Z]/; // Plage de caractères invalide // Vérification des groupes nommés const re2 = /(?<name>\w+) (?<age>\d+)/; // TypeScript connaît les groupes 'name' et 'age'
Isolated declarations
Nouveau mode pour accélérer les builds dans les gros projets :
{
"compilerOptions": {
"isolatedDeclarations": true,
"declaration": true
}
}
Exige des annotations de type explicites sur les exports pour permettre la génération parallèle des .d.ts.
Support des méthodes Set ECMAScript
Typage pour les nouvelles méthodes Set :
const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);
setA.union(setB); // Set {1, 2, 3, 4}
setA.intersection(setB); // Set {2, 3}
setA.difference(setB); // Set {1}
JSDoc @import
Importer des types en JSDoc :
/** @import { SomeType } from "some-module" */
/** @param {SomeType} value */
function process(value) { ... }
Autres améliorations
- Object.groupBy et Map.groupBy typés
- Type utilitaire NoInfer<T>
- Narrowing préservé dans les closures
- require() supporté avec --moduleResolution bundler
Échanger avec un expert TypeScript
Nous revenons vers vous sous 24h.
Chez Makersquad, nous accompagnons nos clients dans le développement d’applications robustes et maintenables grâce à TypeScript. Que ce soit pour structurer un nouveau projet, migrer un codebase existant ou améliorer la qualité et la sécurité de votre application, notre équipe met son expertise TypeScript à votre service.
À retenir
TypeScript 5.5 réduit le nombre de cas où vous devez aider le compilateur. L’inférence des type predicates à elle seule va nettoyer beaucoup de code. Et la vérification des regex ? Un filet de sécurité qu’on ne savait pas qu’on voulait.