Ce qui se passe
L'équipe TypeScript a publié le 20 octobre 2026 la bêta de TypeScript 7.1 :
npm install -D typescript@betaAprè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 :
- mui-docs : 22,2 s → 11,9 s (1,9×) ; mémoire 8 093 → 4 079 MiB (−49,6 %)
- t3code-server : 26,5 s → 19,1 s (1,4×) ; mémoire 6 894 → 5 197 MiB (−24,6 %)
- sentry : 19,6 s → 15,1 s (1,3×) ; mémoire 6 587 → 5 216 MiB (−20,8 %)
- vscode : 21,6 s → 17,7 s (1,2×) ; mémoire 8 387 → 6 943 MiB (−17,2 %)
- bluesky : 4,48 s → 3,89 s (1,2×) ; mémoire 2 017 → 1 698 MiB (−15,8 %)
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 :
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 :
npm install tsrs
npx tsrsDes différences existent encore, comme l'ordre d'affichage des diagnostics.
Comment s'y prendre
- Installer
typescript@betadans une branche, pas dansmain. - Lancer la vérification complète et noter durée et mémoire avant / après.
- Relever les nouvelles erreurs sur les types conditionnels distributifs.
Source : TypeScript, 20 octobre 2026. Source en anglais. Complément : Cloudflare (tsrs).