TypeScript 3.8, la future version du sur-ensemble typé de JavaScript développé par Microsoft, est désormais disponible en version release candidate (RC). Cette dernière mise à jour améliore surtout les importations et les exportations de type uniquement et la conformité aux standards ECMAScript.

La RC ajoute une nouvelle syntaxe pour les importations et exportations de type uniquement, de façon à offrir aux utilisateurs un contrôle plus fin sur l'importation et l'élision. La syntaxe d'importation de type import type n'importe que les déclarations qui serviront pour les annotations et les déclarations de type, et elle sera toujours entièrement effacée. La syntaxe d'exportation de type export type fournit une exportation qui ne servira que pour les contextes de type et sera également effacée de la sortie TypeScript.

TypeScript a utilisé la syntaxe d'importation de JavaScript pour activer les références de types. Même si elle était pratique, cette fonctionnalité ne marchait qu'en raison de la fonction d'élision d'importation, qui omettait les importations de types TypeScript quand TypeScript générait des fichiers JavaScript. Cependant, l'élision d'importation était à la fois insuffisante et problématique.

En relation avec l'importation de type, TypeScript 3.8 a été également doté d’un indicateur de compilation pour contrôler ce qui se passe avec les importations qui ne seront pas utilisées au moment de l'exécution : importsNotUsedAsValues.

Concernant le standard ECMAScript pour JavaScript, TypeScript 3.8 se dote du support des champs privés d’ECMAScript, lesquels font partie d'une proposition de déclaration des champs de classe de stade 3 pour JavaScript. Les champs publics et privés seront intégrés dans un seul ensemble orthogonal, conformément à cette proposition.

D’autres améliorations

Parmi les autres améliorations promises dans TypeScript 3.8, on peut citer :

- Vérification incrémentielle de type « rapide et souple », avec une option de compilation, assumeChangesOnlyAffectDirectDependencies. Cette option peut réduire le temps de compilation de certains fichiers, car TypeScript ne revérifiera/reconstruira que les fichiers qui ont été modifiés et les fichiers qui les importent directement. Elle est recommandée pour les grandes bases de code où les développeurs sont prêts à reporter à plus tard les erreurs complètes du projet.

- Implementation de la syntaxe export as * ns, afin d’offrir un point d'entrée unique qui expose tous les membres d'un autre module comme un seul membre.

- L’attente de haut niveau, une fonctionnalité ECMAScript à venir pour supprimer les restrictions sur l'utilisation d'une expression d'attente en haut d'un fichier dans des conditions spécifiques.

- Les fichiers JavaScript sont supportés dans TypeScript 3.8 en activant l’indicateur allowJs ; la vérification du type de ces fichiers est prise en charge via l'option checkjscode ou en ajoutant un commentaire // @ts-check au début des fichiers .js. Les nouvelles balises JSDoc sont utilisées pour les propriétés, car les fichiers JavaScript n'ont pas de syntaxe dédiée pour la vérification du type.

- Un champ watchOptions dans tsconfig.json et jsconfig.json permet aux utilisateurs d'indiquer au service de compilation/langage les stratégies de surveillance des fichiers à utiliser pour garder une trace des fichiers et des répertoires.

- Des contrôles d'assignation plus stricts aux unions avec des signatures d'index, un changement de rupture.

- Autre changement de rupture, l'objet dans JSDoc n'est plus traité comme any sous noImplicitAny.

La sortie générale de TypeScript 3.8 est prévue pour fin février ou début mars. La version release candidate est accessible via NuGet ou via NPM en tapant npm install typescript@rc.