7.2.0版发布——私有实例方法

91 阅读2分钟

7.2.0版发布——私有实例方法

我们刚刚发布了Babel的一个新的小版本!

这个版本包括对私有实例方法的支持,以及关于Flow和TypeScript类型的一堆错误修复。你可以在GitHub上阅读整个更新日志。

很多新的贡献者在这个版本中修复了错误或实现了新的功能:感谢GcaufyGrigory MorozPaul HappTim McClureVeaceslav 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 DiGioiaJ. 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的正常使用,但它为每个插件提供了一个一致的标识符。这对于像 "时间旅行 "这样的事情特别有用,它可以让你准确地看到每个插件对你的代码做了什么。你可以通过我们的副本看到这一点的效果。