Aller au contenu principal

Version 7.19.0 : Décorateurs Stage 3 et nouvelles fonctionnalités RegExp !

· 4 min de lecture
Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Nous venons de publier Babel 7.19.0 !

Cette version met à jour notre implémentation de la proposition de décorateurs, qui a atteint le Stage 3 en mars. Elle inclut également la prise en charge de la nouvelle proposition de groupes de capture nommés dupliqués pour les expressions régulières.

Vous pouvez consulter l'intégralité du changelog sur GitHub.

Si vous ou votre entreprise souhaitez soutenir Babel et l'évolution de JavaScript sans savoir comment contribuer, vous pouvez nous faire un don via notre Open Collective ou, mieux encore, collaborer directement avec nous à l'implémentation de nouvelles propositions ECMAScript ! En tant que projet géré par des bénévoles, nous dépendons du soutien communautaire pour financer nos efforts visant à accompagner la diversité des utilisateurs JavaScript. Contactez-nous à team@babeljs.io pour en discuter !

Principales fonctionnalités

Nouvelles valeurs par défaut

Suite à la stabilisation des propositions decorators et Record and Tuple, nous avons défini de nouvelles valeurs par défaut pour leurs options de plugin d'analyse syntaxique :

  • decorators/@babel/plugin-proposal-decorators : l'option decoratorsBeforeExport vaut désormais false par défaut ;

  • recordAndTuple/@babel/plugin-proposal-record-and-tuple : l'option syntaxType vaut désormais hash par défaut.

Ces options seront supprimées dans Babel 8.

Décorateurs Stage 3 (#14836)

La proposition de décorateurs a été promue au Stage 3 avec des modifications mineures mais notables. Vous pouvez activer la nouvelle version via l'option "version": "2022-03" de @babel/plugin-proposal-decorators :

babel.config.json
{
"plugins": [
["@babel/plugin-proposal-decorators", {
"version": "2022-03"
}]
]
}

Si vous migrez depuis la version 2021-12, les changements cassants suivants pourraient vous impacter :

  • la méthode initialize de l'objet retourné par les décorateurs d'accesseur a été renommée en init ;

  • les propriétés isPrivate et isStatic du paramètre context reçu par les décorateurs (le deuxième) ont été renommées en private et static ;

  • le paramètre context possède désormais toujours une propriété access, quel que soit le type d'élément décoré ;

  • la prise en charge des métadonnées (getMetadata/setMetadata) a été supprimée et reportée à une future proposition ;

  • les décorateurs de style @(expression)() ne sont plus autorisés : vous devez utiliser @(expression()) ;

  • les décorateurs sont appliqués dans l'ordre suivant, au lieu d'une application unique :

    1. décorateurs de méthodes statiques
    2. décorateurs de méthodes de prototype
    3. décorateurs de champs statiques
    4. décorateurs de champs d'instance
    5. décorateurs de classe.

Si vous migrez depuis une version antérieure de la proposition, nous vous recommandons de lire le README complet. 😉

💡 TypeScript prévoit d'implémenter cette version de la proposition. Après presque une décennie, il sera possible d'écrire des décorateurs sans se soucier de leur compilation par Babel ou tsc !

Groupes de capture nommés en double dans les RegExp (#14805)

Babel prend désormais en charge la proposition RegExp duplicate named capturing groups, qui permet de réutiliser le même nom de groupe dans différentes branches d'une expression régulière :

JavaScript
const dateRE = /(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d)/;

console.log("2022-12".match(dateRE).groups); // { year: "2022", month: "12" }
console.log("12-2022".match(dateRE).groups); // { year: "2022", month: "12" }

Vous pouvez activer cette proposition en utilisant le plugin @babel/plugin-proposal-duplicate-named-capturing-groups-regex :

babel.config.json
{
"plugins": ["@babel/proposal-duplicate-named-capturing-groups-regex"]
}

Babel s'appuie sur différents packages tiers pour transformer les expressions régulières : cela est possible grâce aux mainteneurs de regjsparser, regjsgen et regexpu-core qui ont pris le temps de revoir nos pull requests !