IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft annonce la disponibilit� de TypeScript 5.5 RC (Release Candidate)
Cette version prend en charge les nouvelles m�thodes ECMAScript Set et am�liore la fiabilit� de l'�diteur et du mode veille

Le , par Jade Emy

89PARTAGES

5  0 
Microsoft annonce la disponibilit� de TypeScript 5.5 RC (Release Candidate), cette version prend en charge les nouvelles m�thodes ECMAScript Set et am�liore la fiabilit� de l'�diteur et du mode veille

Microsoft annonce la disponibilit� de la version candidate de TypeScript 5.5.

Voici une liste rapide des nouveaut�s de TypeScript 5.5 :

  • Pr�dicats de type inf�r�s
  • R�duction du flux de contr�le pour les acc�s index�s constants
  • Importations de types dans JSDoc
  • V�rification syntaxique des expressions r�guli�res
  • D�clarations isol�es
  • La variable mod�le ${configDir} pour les fichiers de configuration
  • Consultation des d�pendances package.json pour la g�n�ration de fichiers de d�claration
  • Am�lioration de la fiabilit� de l'�diteur et du mode veille
  • Optimisation des performances et de la taille
  • Modules ECMAScript de consommation d'API plus faciles � utiliser
  • API transpileDeclaration


Une partie de ces nouveaut�s sont d�taill�es dans l'annonce de TypeScript 5.5 Beta. Pour TypeScript 5.5 RC, Microsoft a ajout� la prise en charge des nouvelles m�thodes ECMAScript Set. De plus, ils ont ajust� le comportement de la nouvelle v�rification des expressions r�guli�res de TypeScript pour �tre l�g�rement plus indulgent, tout en continuant � faire des erreurs sur les �chappements douteux qui ne sont autoris�s que par l'annexe B d'ECMAScript.

Microsoft a �galement ajout� et document� encore plus d'optimisations de performance : notamment, la v�rification saut�e dans transpileModule et les optimisations dans la fa�on dont TypeScript filtre les types contextuels. Ces optimisations peuvent conduire � des temps de construction et d'it�ration plus rapides dans de nombreux sc�narios courants.


Prise en charge des nouvelles m�thodes ECMAScript Set

TypeScript 5.5 d�clare de nouvelles m�thodes propos�es pour le type ECMAScript Set.

Certaines de ces m�thodes, comme union, intersection, diff�rence et symmetricDifference, prennent un autre Set et renvoient un nouveau Set comme r�sultat. Les autres m�thodes, isSubsetOf, isSupersetOf et isDisjointFrom, prennent un autre ensemble et renvoient un bool�en. Aucune de ces m�thodes ne modifie les ensembles d'origine.

Consultation des d�pendances package.json pour la g�n�ration du fichier de d�claration

Auparavant, TypeScript affichait souvent un message d'erreur du type :

Code : S�lectionner tout
The inferred type of "X" cannot be named without a reference to "Y". This is likely not portable. A type annotation is necessary.
Cela �tait souvent d� au fait que la g�n�ration du fichier de d�claration de TypeScript se retrouvait dans le contenu de fichiers qui n'avaient jamais �t� explicitement import�s dans un programme. G�n�rer une importation dans un tel fichier pouvait �tre risqu� si le chemin d'acc�s s'av�rait �tre relatif. N�anmoins, pour les bases de code avec des d�pendances explicites dans les dependencies (ou peerDependencies et optionalDependencies) d'un package.json, la g�n�ration d'un tel import devrait �tre s�re sous certains modes de r�solution. Ainsi, dans TypeScript 5.5, Microsoft est plus indulgents lorsque c'est le cas, et de nombreuses occurrences de cette erreur devraient dispara�tre.

Am�lioration de la fiabilit� de l'�diteur et du mode veille

TypeScript a ajout� de nouvelles fonctionnalit�s ou corrig� la logique existante qui rend le mode --watch et l'int�gration de l'�diteur TypeScript plus fiables. Cela devrait se traduire par moins de red�marrages de TSServer/�diteur.

Rafra�chissement correct des erreurs de l'�diteur dans les fichiers de configuration

TypeScript peut g�n�rer des erreurs pour les fichiers tsconfig.json ; cependant, ces erreurs sont en fait g�n�r�es lors du chargement d'un projet, et les �diteurs ne demandent g�n�ralement pas directement ces erreurs pour les fichiers tsconfig.json. Bien que cela semble �tre un d�tail technique, cela signifie que lorsque toutes les erreurs �mises dans un fichier tsconfig.json sont corrig�es, TypeScript n'�met pas un nouvel ensemble d'erreurs fra�ches et vides, et les utilisateurs se retrouvent avec des erreurs p�rim�es � moins qu'ils ne rechargent leur �diteur.

TypeScript 5.5 �met d�sormais intentionnellement un �v�nement pour effacer ces erreurs.

Meilleure gestion des suppressions suivies d'�critures imm�diates

Au lieu d'�craser les fichiers, certains outils choisissent de les supprimer et de cr�er de nouveaux fichiers � partir de z�ro. C'est le cas lors de l'ex�cution de npm ci, par exemple.

Si cela peut �tre efficace pour ces outils, cela peut �tre probl�matique pour les sc�narios de l'�diteur TypeScript o� la suppression d'un fichier surveill� peut l'�liminer ainsi que toutes ses d�pendances transitives. La suppression et la cr�ation d'un fichier en succession rapide peuvent conduire TypeScript � d�manteler un projet entier et � le reconstruire � partir de z�ro.

TypeScript 5.5 a d�sormais une approche plus nuanc�e en conservant des parties d'un projet supprim� jusqu'� ce qu'il d�tecte un nouvel �v�nement de cr�ation. Cela devrait permettre � des op�rations comme npm ci de mieux fonctionner avec TypeScript.

Les liens symboliques sont suivis dans les r�solutions �chou�es

Lorsque TypeScript �choue � r�soudre un module, il devra toujours surveiller les chemins de recherche qui ont �chou� dans le cas o� le module est ajout� plus tard. Auparavant, cela n'�tait pas fait pour les r�pertoires li�s par des liens symboliques, ce qui pouvait causer des probl�mes de fiabilit� dans des sc�narios de type monorepo lorsqu'une construction se produisait dans un projet mais n'�tait pas observ�e dans l'autre. Ce probl�me devrait �tre corrig� dans TypeScript 5.5, ce qui signifie que vous n'aurez plus besoin de red�marrer votre �diteur aussi souvent.

Les r�f�rences de projet contribuent aux importations automatiques

Les importations automatiques ne n�cessitent plus au moins une importation explicite vers des projets d�pendants dans une configuration de r�f�rence de projet. Au lieu de cela, les compl�ments d'auto-importation devraient fonctionner pour tout ce que vous avez list� dans le champ references de votre tsconfig.json.

Optimisation des performances et de la taille

Objets monomorphis�s dans le service linguistique et l'API publique

Dans TypeScript 5.0, les objets Node et Symbol avaient un ensemble coh�rent de propri�t�s avec un ordre d'initialisation coh�rent. Cela permet de r�duire le polymorphisme dans les diff�rentes op�rations, ce qui permet aux moteurs d'ex�cution d'aller chercher les propri�t�s plus rapidement.

En apportant ce changement, Microsoft a constat� des gains de vitesse impressionnants dans le compilateur ; cependant, la plupart de ces changements ont �t� effectu�s sur les allocateurs internes pour les structures de donn�es. Le service linguistique, ainsi que l'API publique de TypeScript, utilisent un ensemble diff�rent d'allocateurs pour certains objets. Cela a permis au compilateur TypeScript d'�tre un peu plus l�ger, car les donn�es utilis�es uniquement pour le service de langage ne seraient jamais utilis�es dans le compilateur.

Dans TypeScript 5.5, le m�me travail de monomorphisation a �t� effectu� pour le service de langage et l'API publique. Cela signifie que votre exp�rience d'�diteur, et tous les outils de construction qui utilisent l'API TypeScript, deviendront beaucoup plus rapides. En fait, dans ses benchmarks, Microsoft a constat� une acc�l�ration de 5 � 8 % des temps de construction lors de l'utilisation des allocateurs de l'API TypeScript publique, et des op�rations du service de langage plus rapides de 10 � 20 %. Bien que cela implique une augmentation de la m�moire, Microsoft pense que ce compromis en vaut la peine et esp�re trouver des moyens de r�duire cette surcharge de m�moire. Les choses devraient �tre beaucoup plus rapides maintenant.

N�uds de flux de contr�le monomorphis�s

Dans TypeScript 5.5, les n�uds du graphe de flux de contr�le ont �t� monomorphis�s afin qu'ils conservent toujours une forme coh�rente. Ce faisant, les temps de v�rification seront souvent r�duits d'environ 1%.

Optimisations du graphe de flux de contr�le

Dans de nombreux cas, l'analyse du flux de contr�le traverse des n�uds qui ne fournissent aucune nouvelle information. Microsoft a observ� qu'en l'absence de terminaison pr�coce ou d'effets dans les ant�c�dents (ou � dominateurs �) de certains n�uds, ces n�uds pouvaient toujours �tre ignor�s. Ainsi, TypeScript construit d�sormais ses graphes de flux de contr�le pour tirer parti de cette situation en �tablissant un lien avec un n�ud ant�rieur qui fournit des informations int�ressantes pour l'analyse du flux de contr�le. Cela permet d'obtenir un graphique de flux de contr�le plus plat, qui peut �tre plus efficace � parcourir. Cette optimisation a permis d'obtenir des gains modestes, mais avec des r�ductions allant jusqu'� 2 % du temps de construction sur certaines bases de code.

V�rification omise dans transpileModule et transpileDeclaration

L'API transpileModule de TypeScript peut �tre utilis�e pour compiler le contenu d'un seul fichier TypeScript en JavaScript. De m�me, l'API transpileDeclaration peut �tre utilis�e pour g�n�rer un fichier de d�claration pour un seul fichier TypeScript. L'un des probl�mes pos�s par ces API est que TypeScript effectue en interne un contr�le de type complet sur l'ensemble du contenu du fichier avant d'�mettre la sortie. Cela �tait n�cessaire pour collecter certaines informations qui seraient ensuite utilis�es pour la phase d'�mission.

Dans TypeScript 5.5, Microsoft a trouv� un moyen d'�viter d'effectuer une v�rification compl�te, en ne collectant que paresseusement ces informations si n�cessaire, et transpileModule et transpileDeclaration activent tous deux cette fonctionnalit� par d�faut. En cons�quence, les outils qui s'int�grent � ces API, comme ts-loader avec transpileOnly et ts-jest, devraient voir une acc�l�ration notable. Lors des tests, Microsoft a g�n�ralement constat� une acc�l�ration de 2 fois du temps de construction en utilisant transpileModule.

R�duction de la taille des paquets TypeScript

En tirant parti de la transition vers les modules dans la version 5.0, Microsoft a consid�rablement r�duit la taille globale des paquets TypeScript en faisant en sorte que tsserver.js et typingsInstaller.js importent � partir d'une biblioth�que API commune au lieu d'avoir chacun d'entre eux produisant des paquets autonomes.

Cela r�duit la taille de TypeScript sur le disque de 30,2 Mo � 20,4 Mo, et r�duit sa taille emball�e de 5,5 Mo � 3,7 Mo !

R�utilisation de n�uds dans Declaration Emit

Dans le cadre de l'activation des isolatedDeclarations, Microsoft a consid�rablement am�lior� la fr�quence � laquelle TypeScript peut copier directement votre code source d'entr�e lors de la production de fichiers de d�claration.

Notez que les types d'union sont �quivalents, mais que l'ordre de l'union est diff�rent. Lors de l'�mission du fichier de d�claration, TypeScript a deux possibilit�s de sortie �quivalente.

La premi�re consiste � utiliser une repr�sentation canonique coh�rente pour chaque type. La seconde approche est g�n�ralement pr�f�rable pour plusieurs raisons :

  • De nombreuses repr�sentations �quivalentes encodent encore un certain niveau d'intention qu'il est pr�f�rable de pr�server dans le fichier de d�claration
  • La production d'une nouvelle repr�sentation d'un type peut �tre quelque peu co�teuse, il est donc pr�f�rable de l'�viter.
  • Les types �crits par l'utilisateur sont g�n�ralement plus courts que les repr�sentations de types g�n�r�es.


Dans la version 5.5, Microsoft a grandement am�lior� le nombre d'endroits o� TypeScript peut correctement identifier les endroits o� il est s�r et correct d'imprimer les types exactement comme ils ont �t� �crits dans le fichier d'entr�e. Beaucoup de ces cas sont des am�liorations de performance invisibles - TypeScript g�n�rerait de nouveaux ensembles de n�uds syntaxiques et les s�rialiserait dans une cha�ne de caract�res. Au lieu de cela, TypeScript peut maintenant op�rer directement sur les n�uds syntaxiques originaux, ce qui est beaucoup moins co�teux et plus rapide.

Mise en cache des types contextuels � partir d'unions discrimin�es

Lorsque TypeScript demande le type contextuel d'une expression comme un litt�ral d'objet, il rencontre souvent un type union. Dans ce cas, TypeScript essaie de filtrer les membres de l'union en se basant sur des propri�t�s connues avec des valeurs bien connues (c'est-�-dire des propri�t�s discriminantes). Ce travail peut �tre assez co�teux, surtout si vous vous retrouvez avec un objet compos� d'un grand nombre de propri�t�s. Dans TypeScript 5.5, une grande partie du calcul est mise en cache une fois pour que TypeScript n'ait pas besoin de le recalculer pour chaque propri�t� de l'objet litt�ral. Cette optimisation a permis de gagner 250 ms sur la compilation du compilateur TypeScript lui-m�me.

Modules ECMAScript de consommation d'API plus faciles � utiliser

Auparavant, si vous �criviez un module ECMAScript dans Node.js, les importations nomm�es n'�taient pas disponibles dans le package typescript.

Code : S�lectionner tout
1
2
3
4
5
6
import { createSourceFile } from "typescript"; //  error

import * as ts from "typescript";
ts.createSourceFile //  undefined???

ts.default.createSourceFile //  works - but ugh!
En effet, cjs-module-lexer ne reconnaissait pas le mod�le de code CommonJS g�n�r� par TypeScript. Ce probl�me a �t� corrig� et les utilisateurs peuvent d�sormais utiliser les importations nomm�es du paquetage TypeScript npm avec les modules ECMAScript dans Node.js.

Code : S�lectionner tout
1
2
3
4
import { createSourceFile } from "typescript"; //  works now!

import * as ts from "typescript";
ts.createSourceFile //  works now!

L'API transpileDeclaration

L'API TypeScript expose une fonction appel�e transpileModule. Elle est destin�e � faciliter la compilation d'un seul fichier de code TypeScript. Comme elle n'a pas acc�s � un programme entier, elle risque de ne pas produire le bon r�sultat si le code ne respecte pas les erreurs de l'option isolatedModules.

Dans TypeScript 5.5, Microsoft a ajout� une nouvelle API similaire appel�e transpileDeclaration. Cette API est similaire � transpileModule, mais elle est sp�cifiquement con�ue pour g�n�rer un seul fichier de d�claration bas� sur un texte source d'entr�e. Tout comme transpileModule, elle n'a pas acc�s � un programme complet, et une mise en garde similaire s'applique : elle ne g�n�re un fichier de d�claration pr�cis que si le code d'entr�e est exempt d'erreurs en vertu de la nouvelle option isolatedDeclarations.

Si vous le souhaitez, cette fonction peut �tre utilis�e pour parall�liser l'�mission de d�clarations dans tous les fichiers en mode isolatedDeclarations. Notez que, bien que vous puissiez ressentir une partie de la surcharge de performance de transpileModule dans transpileDeclaration, Microsoft travaille sur des moyens d'optimiser cela davantage.

Des changements de comportements sont �galement notables dans TypeScript 5.5. Parmi les changements, on peut noter :

  • D�sactivation des fonctionnalit�s obsol�tes dans TypeScript 5.0
  • Changements dans lib.d.ts
  • Respect des extensions de fichiers et de package.json dans d'autres modes de modules
  • Parsing plus strict pour les d�corateurs
  • undefined n'est plus un nom de type d�finissable
  • D�claration simplifi�e de la directive de r�f�rence Emit


Quelles sont les prochaines �tapes ?

Microsoft :

� ce stade, nous pr�voyons tr�s peu de changements pour TypeScript 5.5 en dehors des corrections de bogues critiques pour le compilateur et des corrections de bogues mineurs pour le service de langage. Dans les prochaines semaines, nous publierons la premi�re version stable de TypeScript 5.5. Gardez un �il sur notre plan d'it�ration pour conna�tre les dates de sortie et plus si vous avez besoin de vous coordonner.

Sinon, nous nous concentrons sur le d�veloppement de TypeScript 5.6, et nous aurons le plan d'it�ration disponible dans les prochains jours (y compris les dates de sortie pr�vues). De plus, nous facilitons l'utilisation des nightly builds de TypeScript sur npm, et il existe une extension pour utiliser ces nightly releases dans Visual Studio Code.
Source : Annonce Typescript 5.5 RC

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi :

Microsoft annonce la disponibilit� de TypeScript 5.5 Beta, cette version apporte les pr�dicats de type inf�r�s et r�duit le flux de controle pour les acc�s index�s constants

Microsoft annonce la disponibilit� de la version candidate de TypeScript 5.4, cette version corrige des bogues critiques et contient des changements notables de comportement
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.

Une erreur dans cette actualit� ? Signalez-nous-la !