Babel 中文文档
  • 印记中文
  • 文档
  • 配置
  • 试用
  • 视频
  • 博客
  • 赞助
  • 团队
  • GitHub

›All Blog Posts

All Blog Posts

  • 7.19.0 Released: Stage 3 decorators and more RegExp features!
  • 7.18.0 Released: Destructuring private elements and TypeScript 4.7
  • 7.17.0 Released: RegExp 'v' mode and ... 🥁 decorators!
  • 7.16.0 发布: ESLint 8 和 TypeScript 4.5
  • 7.15.0 发布:支持 Hack-style 管道, TypeScript 枚举常量和 Rhino 目标
  • Babel is used by millions, so why are we running out of money?
  • 7.14.0 Released: New class features enabled by default, TypeScript 4.3, and better CommonJS interop
  • 7.13.0 Released: Records and Tuples, granular compiler assumptions, and top-level targets
  • 7.12.0 Released: TypeScript 4.1, strings as import/export names, and class static blocks
  • 7.11.0 Released: ECMAScript 2021 support in preset-env, TypeScript 4.0 support, printing config and the future of `babel-eslint`
  • The State of babel-eslint
  • 7.10.0 Released: Class Fields in preset-env, '#private in' checks and better React tree-shaking
  • 7.9.0 Released: Smaller preset-env output, Typescript 3.8 support and a new JSX transform
  • 7.8.0 Released: ECMAScript 2020, .mjs configuration files and @babel/cli improvements
  • Babel's Funding Plans
  • 7.7.0 Released: Error recovery and TypeScript 3.7
  • 7.6.0 Released: Private static accessors and V8 intrinsic syntax
  • 7.5.0 Released: dynamic import and F# pipelines
  • The Babel Podcast
  • 7.4.0 Released: core-js 3, static private methods and partial application
  • 7.3.0 Released: Named capturing groups, private instance accessors and smart pipelines
  • 7.2.0 发布:私有实例方法(Private Instance Methods)
  • 在 Babel 中支持 TC39 标准的装饰器
  • 7.1.0 Released: Decorators, Private Static Fields
  • Babel 7 发布
  • Removing Babel's Stage Presets
  • What's Happening With the Pipeline (|>) Proposal?
  • Announcing Babel's New Partnership with trivago!
  • On Consuming (and Publishing) ES2015+ Packages
  • Nearing the 7.0 Release
  • Babel Turns Three
  • Planning for 7.0
  • Zero-config code transformation with babel-plugin-macros
  • Contributing to Babel: Three Lessons to Remember
  • Personal Experiences at Babel #1 — A PR with Unusually High Number of Reviews
  • Babel and Summer of Code 2017
  • Upgrade to Babel 7 (moved)
  • Upgrade to Babel 7 for Tool Authors (WIP)
  • 6.23.0 Released
  • The State of Babel
  • 6.19.0 Released
  • 6.18.0 Released
  • 6.16.0 Released
  • Babili (babel-minify)
  • 6.14.0 Released
  • Babel Doctor
  • Setting up Babel 6
  • 6.0.0 Released
  • React on ES6+
  • Function Bind Syntax
  • 5.0.0 Released
  • Babel 喜爱 React
  • 并非出生而逐渐走向灭亡
  • 2to3
  • 6to5 + esnext

7.2.0 发布:私有实例方法(Private Instance Methods)

December 3, 2018

Nicolò Ribaudo

我们刚刚新发布了 Babel 的小版本。

此版本中包含对私有实例方法的支持以及一系列与 Flow 和 TypeScript 类型相关的错误修复。你可以在 Github 上阅读整个日志。

许多新的贡献者在此版本中参与修复了 bug 以及实现了新功能:感谢 Gcaufy,Grigory Moroz,Paul Happ,Tim McClure 和 Veaceslav Cotruta!

Bloomberg 为私有类元素的实现提供了强有力的赞助,借此表示衷心的感谢!支持 private instance 方法是针对于 Babel 7.1.0 中 private static fields 的后续版本。

如果你或你的公司想要支持 Babel 和 JavaScript 的发展,但不确定如何操作,你可以通过 OpenCollective 向我们捐款,更好的方式是直接与我们合作完善/实现新的 ECMAScript 提案!

私有实例方法(#8654)

class Person {
  #age = 19;

  #increaseAge() {
    this.#age++;
  }

  birthday() {
    this.#increaseAge();
    alert("Happy Birthday!");
  }
}

感谢 Tim 实现了该提案,以及 Nicolò 和 Justin 对代码进行了 review !

你可以将 @babel/plugin-proposal-private-methods 插件添加到 Babel 配置或在 repl 中启用 stage-3 preset 来测试私有方法。

私有访问器(accessors)也即将发布,并且我们内部进行了重大的重构,这使得我们可以快速的为装饰器添加对私有元素的支持 🎉。

"Smart" 管道操作符解析(#8289)

感谢 James DiGioia 和 J. S. Choi 所做的工作,除了对 minimal version 进行支持外,@babel/parser 现在也能够解析 Smart 管道操作符。

我们目前只支持 smart 管道操作符的 "core",并没有提供其他功能。我们目前也只初步支持 # 作为占位符。实际的占位符尚未确定,还存在其他占位符的可能,诸如 ?,@ 以及 % 等,可能会在未来被 @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" 选项传递给 pipeline plugin:

const ast = babel.parse(code, {
  plugins: [["pipelineOperator", { proposal: "smart" }]],
});

我们尚未支持转译这种语法,但它很快就会出现。

插件名 (#8769)

Babel 会为每个官方插件提供相应的名称。尽管这不会影响 Babel 的正常使用,但它为每个插件提供了始终如一的标识符。这对于像 Time Travel 所做的事情特别有用,它允许你准确地看到每个插件对你的代码都做了何种操作。你可以通过 repl 看到这一点:


Discuss on Twitter

Recent Posts
  • 私有实例方法(#8654)
  • "Smart" 管道操作符解析(#8289)
  • 插件名 (#8769)
Babel 中文文档
文档
学习 ES2015
社区
视频用户Stack OverflowSlack 频道Twitter
更多
博客GitHub 组织GitHub 仓库Website 仓库旧版网址 6.x旧版网址 5.x