7.2.0版发布——私有实例方法
我们刚刚发布了Babel的一个新的小版本!
这个版本包括对私有实例方法的支持,以及关于Flow和TypeScript类型的一堆错误修复。你可以在GitHub上阅读整个更新日志。
很多新的贡献者在这个版本中修复了错误或实现了新的功能:感谢Gcaufy、Grigory Moroz、Paul Happ、Tim McClure和Veaceslav Cotruta!
衷心感谢Bloomberg赞助了私有类元素的实现!这种对私有实例方法的支持是Babel7.1.0中发布的私有静态字段的后续。
如果你或你的公司想支持Babel和JavaScript的发展,但不确定如何支持,你可以在OpenCollective上向我们捐款,更好的是,直接与我们合作实现ECMAScript的新提案
私有实例方法
class Person {
#age = 19;
#increaseAge() {
this.#age++;
}
birthday() {
this.#increaseAge();
alert("Happy Birthday!");
}
}
感谢Tim实现了这个提案,感谢Nicolò和Justin的评论
你可以通过在Babel配置中添加@babel/plugin-proposal-private-methods 插件来测试私有方法,或者在副本中启用stage-3 预设。
私有访问器也即将到来,我们已经做了一些大的内部重构,使我们很快就能在装饰器中加入对私有元素的支持 🎉。
"智能 "管道运营商解析
感谢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" }]
]
})
我们现在还不支持转写这种语法,但很快就会出现。
插件名称
现在每个官方插件都为Babel提供了它的名字。虽然这并不影响Babel的正常使用,但它为每个插件提供了一个一致的标识符。这对于像 "时间旅行 "这样的事情特别有用,它可以让你准确地看到每个插件对你的代码做了什么。你可以通过我们的副本看到这一点的效果。
