TypeScript 3.9, la future version du populaire sur-ensemble de typage statique de JavaScript, est passée au stade de release candidate le 28 avril 2020. À l'exception des corrections de bogues critiques, cette version ne subira aucun autre changement d'ici la sortie de la version finale prévue pour le 12 mai. TypeScript 3.9 apporte des améliorations de performance, un code de meilleure qualité et plus de stabilité. Cette version a principalement essayé de résoudre des problèmes de vitesses d'édition et de temps de latence extrêmement élevés lors de la compilation de paquets. La version candidate est accessible via NuGet ou NPM à partir de la commande npm install typescript@rc.

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.

- Nouveaux commentaires // @ts-expect-erreur. Lorsqu'une ligne est préfixée par ce commentaire, TypeScript supprimera la déclaration de l'erreur. S'il n'y a pas d'erreur, TypeScript signalera que le commentaire n'était pas nécessaire.

- Améliorations visant à préserver les nouvelles lignes.

- Corrections rapides pour les expressions de retour manquantes.

- Prise en charge des fichiers tsonfig.json "Solution Style".

- 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 opérateurs conditionnels 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.

- Les « Getters » et « Setters » ne sont plus énumérables. C’est un autre changement important. Les anciennes versions de TypeScript émettaient des accesseurs de type get et set dans les classes de manière à les rendre énumérables, ce qui n'était pas conforme à la spécification ECMAScript.

Disponible en version bêta depuis le 27 mars, TypeScript 3.9 succède à TypeScript 3.8, disponible depuis février. Cette dernière version 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. Les développeurs avaient initialement prévu d’intégrer l’opérateur dans la future version, mais ils l’ont retiré de la branche principale, estimant qu’ils devaient encore améliorer la fonction.