Cette version bêta de TypeScript 3.9, prochaine édition du sur-ensemble de typage statique de JavaScript, résout des problèmes de performance constatés par l'équipe de TypeScript au moment de la compilation de paquets de type « material-ui » et de composants de style. Une série de six requêtes pull, couvrant des opérations préconisant l'utilisation d'objets au lieu de fermetures pour les mappeurs de type et l'optimisation des références de type différées, ont permis de réduire considérablement les temps de compilation.

Selon TypeScript, l’équipe de développeurs est parvenue à réduire d’environ 40 % le temps de compilation avec « material-ui ». Pour gagner en vitesse, ces derniers ont également apporté certaines modifications pour éviter que la fonctionnalité de renommage des fichiers dans VS Code n’entraîne des lenteurs dans l’éditeur de code.

La version de production de TypeScript 3.9, dont la sortie est prévue pour le 12 mai, comprendra également les améliorations suivantes :

- Améliorations du processus d'inférence, pour répondre à une situation dans laquelle certaines régressions s'étaient produites dans les mises à jour précédentes des déclarations de fonctions comme Promise.all et Promise.race.

- Les vérifications des fonctions non appelées, introduites dans TypeScript 3.7 pour signaler une erreur lorsqu'un développeur a oublié d'appeler une fonction, seront désormais prises en charge dans les conditions ternaires, essentiellement, la syntaxe (cond ? trueExpr : falseExp).

- Concernant les importations automatiques CommonJS en JavaScript, TypeScript détectera désormais automatiquement les types d'importation pour que le style d'un fichier reste propre et cohérent.

- Vérifications plus strictes des insertions et des propriétés facultatives. Selon Microsoft, c’est un changement décisif.

TypeScript 3.9 succèdera à TypeScript 3.8, disponible depuis le mois de février. La version 3.9 n'inclura pas l’opérateur de type « Awaited » pour modéliser la façon dont le déballage de la fonction « Promise » se comporte dans JavaScript. À l’origine, les développeurs avaient prévu d’intégrer l’opérateur dans la future version, mais ils l’ont retiré de la branche principale, estimant que la fonction avait encore besoin d ‘être améliorée avant de la déployer.