veilletech.fr
21 oct. Feed du jour
#07 OUTILS Article

TypeScript 7.1 bêta : jusqu'à 1,9× plus rapide

Essayez la bêta sur une branche, pas sur main.

TypeScript 7.1 passe en bêta avec des gains mesurés par l'équipe sur cinq bases de code : de 1,2× à 1,9× plus rapide et de 16 à 50 % de mémoire en moins face à 7.0. La bêta apporte les attributs d'import dans les modules ambiants, la cible es2026 stable et une nouvelle API, mais durcit la vérification des paramètres de type distributifs. En parallèle, Cloudflare et VoidZero présentent tsrs, un portage Rust expérimental annoncé jusqu'à 8× plus rapide.

3 min de lectureintermédiairevidéo 1:16
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Ce que la bêta ajoute
  3. Ce qui peut casser
  4. Et tsrs, côté Cloudflare
  5. Comment s'y prendre
  6. À retenir

Ce qui se passe

L'équipe TypeScript a publié le 20 octobre 2026 la bêta de TypeScript 7.1 :

Terminal
npm install -D typescript@beta

Après le portage natif de la version 7, que l'équipe situe autour de dix fois plus rapide que la 6, la 7.1 ajoute des dizaines d'optimisations du vérificateur de types. Mesures de l'équipe, face à 7.0, avec les 4 threads de vérification par défaut et l'option --noEmit :

Ce que la bêta ajoute

Attributs d'import dans les modules ambiants. Un import comme import readme from "./README.md" with { type: "text" } dit au moteur comment lire le fichier, mais une déclaration declare module "*.md" ne le savait pas : on pouvait oublier l'attribut sans erreur. Le déclarer devient possible :

TypeScript
declare module "*" with { type: "css" } {
    const content: CSSStyleSheet;
    export default content;
}

Les types text (une chaîne) et bytes (un Uint8Array) se déclarent de la même façon. Ces déclarations ne sont pas livrées avec TypeScript, et l'équipe déconseille aux bibliothèques de les publier : c'est au projet final de les écrire.

--target es2026 stable, avec notamment Map.prototype.getOrInsert() et getOrInsertComputed(), Array.fromAsync(), Error.isError(), JSON.rawJSON(), Iterator.concat(), Math.sumPrecise() et les méthodes base64 / hexadécimal de Uint8Array. --lib esnext ajoute des propositions comme Promise.allKeyed, Iterator.zip et Iterator.prototype.chunks.

Imports de phase source (import source), utiles aujourd'hui surtout pour les modules WebAssembly, et une nouvelle API TypeScript 7.1 (snapshots, accès au système de fichiers, content mappers) pour les outils qui s'appuient sur le compilateur.

Ce qui peut casser

La bêta est plus stricte sur les paramètres de type distributifs : dans une branche d'un type conditionnel, le paramètre représente un sous-ensemble de l'union d'origine, et n'est plus accepté là où la contrainte d'origine est exigée. L'erreur type : « Type 'B' does not satisfy the constraint 'A' ». Selon le billet, il faut soit retirer la contrainte devenue inutile, soit ajouter une vérification conditionnelle. Les types du DOM dans lib.d.ts bougent aussi.

Calendrier : une préversion candidate dans environ un mois, puis la version finale.

Et tsrs, côté Cloudflare

Le même jour, Cloudflare et VoidZero annoncent tsrs, un portage de TypeScript en Rust, incubé dans la chaîne d'outils Oxc, avec Max Schwenk (Owner.com) et en accord avec l'équipe TypeScript : ce n'est pas un fork. Chiffres de Cloudflare, à comparer en connaissance de cause : jusqu'à 8× plus rapide et environ 70 % de mémoire en moins que TypeScript 7.0 à nombre égal de threads de vérification, et une 7.1 bêta jusqu'à 2,5× plus rapide que la 7.0. L'argument pour Rust est l'exécution dans WebAssembly sans embarquer de ramasse-miettes. Version expérimentale :

Terminal
npm install tsrs
npx tsrs

Des différences existent encore, comme l'ordre d'affichage des diagnostics.

Comment s'y prendre

  1. Installer typescript@beta dans une branche, pas dans main.
  2. Lancer la vérification complète et noter durée et mémoire avant / après.
  3. Relever les nouvelles erreurs sur les types conditionnels distributifs.

Source : TypeScript, 20 octobre 2026. Source en anglais. Complément : Cloudflare (tsrs).