7.2.0 版本发布:私有实例方法
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
我们刚刚发布了 Babel 的新次版本更新!
本次更新包含对私有实例方法的支持,以及针对 Flow 和 TypeScript 类型的大量错误修复。您可以在 GitHub 上查看完整的更新日志。
多位新贡献者在此版本中修复了错误或实现了新功能:感谢 Gcaufy、Grigory Moroz、Paul Happ、Tim McClure 和 Veaceslav Cotruta!
特别感谢 Bloomberg 赞助私有类元素的实现!此次对私有实例方法的支持是继 Babel 7.1.0 中私有静态字段功能后的又一力作。
如果您或您的公司希望支持 Babel 和 JavaScript 的演进但不知如何参与,可通过 OpenCollective 向我们捐款,更棒的方式是直接与我们合作实现 新的 ECMAScript 提案!
私有实例方法 (#8654)
class Person {
#age = 19;
#increaseAge() {
this.#age++;
}
birthday() {
this.#increaseAge();
alert("Happy Birthday!");
}
}
感谢 Tim 实现此提案,以及 Nicolò 和 Justin 的评审!
您可以通过在 Babel 配置中添加 @babel/plugin-proposal-private-methods 插件,或在 REPL 中启用 stage-3 预设来测试私有方法。
私有访问器也即将到来,我们已完成重大内部重构,很快就能为装饰器添加私有元素支持 🎉。
"智能"管道操作符解析 (#8289)
感谢 James DiGioia 和 J. S. Choi 的工作,@babel/parser 现已能解析智能管道操作符,这是对精简版的补充。
目前我们仅支持智能管道提案的"核心"功能,不包含额外特性。同时仅初步支持 # 作为占位符。实际占位符尚未确定,未来 @babel/parser 可能实验性支持 ?、@ 和 % 等其他选项。
// "Smart"
const result = 2 |> double |> 3 + # |> toStringBase(2, #); // "111"
// "Simple"
const result = 2 |> double |> (x => 3 + x) |> (x => toStringBase(2, x));
Babel 实现了该提案的多种变体,以帮助 TC39 测试并收集社区反馈。与所有提案一样,预计未来会有变更。
若您直接使用 @babel/parser 并想测试此提案,可向管道插件传递 proposal: "smart" 选项:
const ast = babel.parse(code, {
plugins: [
["pipelineOperator", { proposal: "smart" }]
]
})
目前暂不支持转译此语法,但即将实现。
插件命名规范 (#8769)
现在,每个官方插件都会向 Babel 提供其名称。尽管这不会影响 Babel 的正常使用,但它为每个插件提供了统一的标识符。这对于像 Time Travel 这样的功能特别有用,它能让你精确查看每个插件对代码的修改过程。你可以通过我们的 repl 查看实际效果:
