7.2.0 Publiée : Méthodes Privées d'Instance
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 une nouvelle version mineure de Babel !
Cette version inclut la prise en charge des méthodes privées d'instance et de nombreux correctifs concernant les types Flow et TypeScript. Vous pouvez consulter l'intégralité du journal des modifications sur GitHub.
De nombreux nouveaux contributeurs ont corrigé des bugs ou implémenté des fonctionnalités dans cette version : merci à Gcaufy, Grigory Moroz, Paul Happ, Tim McClure et Veaceslav Cotruta !
Un grand merci à Bloomberg pour le parrainage de l'implémentation des éléments de classe privés ! Cette prise en charge des méthodes privées d'instance fait suite aux champs statiques privés publiés dans Babel 7.1.0.
Si vous ou votre entreprise souhaitez soutenir Babel et l'évolution de JavaScript mais ne savez pas comment faire, vous pouvez nous faire un don sur OpenCollective et, mieux encore, travailler directement avec nous sur l'implémentation des nouvelles propositions ECMAScript !
Méthodes Privées d'Instance (#8654)
class Person {
#age = 19;
#increaseAge() {
this.#age++;
}
birthday() {
this.#increaseAge();
alert("Happy Birthday!");
}
}
Merci à Tim pour l'implémentation de cette proposition, et à Nicolò et Justin pour les relectures !
Vous pouvez tester les méthodes privées en ajoutant le plugin @babel/plugin-proposal-private-methods à votre configuration Babel, ou en activant le preset stage-3 dans le REPL.
Les accesseurs privés arrivent également, et nous avons effectué un important remaniement interne qui nous permettra d'ajouter bientôt la prise en charge des éléments privés dans les décorateurs 🎉.
Analyse de l'Opérateur Pipeline "Intelligent" (#8289)
Grâce au travail de James DiGioia et J. S. Choi, @babel/parser peut désormais aussi analyser l'Opérateur Pipeline Intelligent, en complément de la version minimale.
Nous ne prenons actuellement en charge que le "cœur" de la proposition de pipeline intelligent, sans fonctionnalités supplémentaires. Nous ne supportons également que # comme espace réservé préliminaire. Le véritable caractère n'est pas encore décidé, et d'autres possibilités comme ?, @, et % pourraient être supportées expérimentalement par @babel/parser à l'avenir.
// "Smart"
const result = 2 |> double |> 3 + # |> toStringBase(2, #); // "111"
// "Simple"
const result = 2 |> double |> (x => 3 + x) |> (x => toStringBase(2, x));
Babel implémente plusieurs variantes de cette proposition pour aider TC39 à tester et recueillir les retours de la communauté. Comme pour toutes les propositions, attendez-vous à des changements futurs.
Si vous utilisez directement @babel/parser et souhaitez tester cette proposition, vous pouvez passer l'option proposal: "smart" au plugin pipeline :
const ast = babel.parse(code, {
plugins: [
["pipelineOperator", { proposal: "smart" }]
]
})
Nous ne prenons pas encore en charge la transpilation de cette syntaxe, mais cela arrivera bientôt.
Noms des Plugins (#8769)
Chaque plugin officiel fournit désormais son nom à Babel. Bien que cela n'affecte pas l'utilisation normale de Babel, cela fournit un identifiant cohérent pour chaque plugin. C'est particulièrement utile pour des fonctionnalités comme Time Travel, qui permet de visualiser précisément l'action de chaque plugin sur votre code. Vous pouvez observer cela en action via notre REPL :
