Se rendre au contenu

TypeScript 5.5 est sorti

20 juin 2024 par
TypeScript 5.5 est sorti
Makersquad

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.


Django 5.1 est sorti