Version 7.19.0 : Décorateurs Stage 3 et nouvelles fonctionnalités RegExp !
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'optiondecoratorsBeforeExportvaut désormaisfalsepar défaut ; -
recordAndTuple/@babel/plugin-proposal-record-and-tuple: l'optionsyntaxTypevaut désormaishashpar 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 :
{
"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
initializede l'objet retourné par les décorateurs d'accesseur a été renommée eninit; -
les propriétés
isPrivateetisStaticdu paramètrecontextreçu par les décorateurs (le deuxième) ont été renommées enprivateetstatic; -
le paramètre
contextpossè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 :
- décorateurs de méthodes statiques
- décorateurs de méthodes de prototype
- décorateurs de champs statiques
- décorateurs de champs d'instance
- 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 :
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 :
{
"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 !