TypeScript 3.5, la dernière version du sur-ensemble de JavaScript typé de Microsoft, est désormais disponible en version de production. La mise à jour optimise le contrôle de type, corrigeant ainsi un sérieux problème de ralentissement apparu dans TypeScript 3.4. Pour accélérer TypeScript, l'équipe de développement de Microsoft s'est concentrée sur l'optimisation des chemins de code et a supprimé certaines fonctionnalités. Par rapport à TypeScript 3.4, les temps de compilation ont été réduits. Les développeurs de TypeScript précisent aussi que la complétion de code et d’autres opérations effectuées par l'éditeur devraient être également plus « rapides ».

En réalisant ces optimisations, l'équipe de TypeScript a voulu corriger un important problème de ralentissement apparu dans TypeScript 3.4 qui pouvait accroître de manière conséquente le temps de vérification des types. Non seulement ce ralentissement allongeait les temps de développement, mais il rendait aussi les opérations d'édition « insupportablement lentes » pour les utilisateurs de TypeScript et de JavaScript. Les développeurs utilisant la bibliothèque de composants stylés étaient les plus impactés par ce ralentissement.

Zoom sur les autres améliorations de TypeScript 3.5

- Optimisations de mise en cache ayant un impact sur l'option compilateur incrémentielle et réduisant le temps de re-compilation ;

- Ajout d’un fichier de déclaration lib.d.ts pour fournir un type d’assistance Omit. Le compilateur utilisera ce type Omit pour exprimer des types créés via des déclarations de déstructuration d'objet sur des génériques ;

- Amélioration des contrôles de propriété excédentaires dans les types d’union. La fonction dite excess property checking est destinée à trouver des fautes de frappe lorsqu'un type n'attend pas une propriété spécifique. Dans TypeScript 3.5, le vérificateur de type s’assure que toutes les propriétés fournies appartiennent à un membre de l’union et qu’elles ont le type approprié ;

- Lors de l’attribution de types à propriétés discriminantes, le langage décomposera les types en une union de tous les types possibles. Cela permet une vérification plus intelligente du type d’union ;

- Référencement des déclarations globales UMD (Universal Module Definition) en utilisant un drapeau allowUmdGlobalAccess ;

- Inférence de type d'ordre supérieur à partir de constructeurs génériques ;

- Une fonctionnalité Smart Select fournit une API permettant aux éditeurs d'étendre les sélections de texte vers l'extérieur en tenant compte de la syntaxe. Les éditeurs n'ont pas besoin d'utiliser des heuristiques comme les marqueurs de parenthèse. Les développeurs pourront constater que l'expansion de la sélection dans des éditeurs comme Visual Studio Code fonctionne simplement ;

- Un nouveau refactoring extrait les types en alias locaux et des paramètres de type générique contraints au type unknown.

La version candidate de TypeScript 3.5 est téléchargeable depuis NuGet ou en utilisant la commande NPM suivante : npm install -g typescript