最近发布的Babel 7.7 现在可以解析顶级作用域 await、Flow enum 声明(Flow提案)了,并提供了从某些语法错误中恢复的选项。Babel 7.7 现在支持TypeScript 3.7,此外,它还引入了一个全新的可选的 babel.config.json 配置文件,以及其他一些特性和 bug 修复。
顶级作用域 await 使 ECMAScript 模块(ESM)能够 await 资源,从而导致 import 它们的其他模块在评估其主体之前等待。例如,第3阶段提案(Stage 3 proposal )允许开发人员有条件地加载依赖项或执行应用程序初始化:
顶级作用域 await 的使用是基于模块绑定器也是支持它的假设前提的。使用 Rollup 的开发人员可以启用experimentalTopLevelAwait选项。使用 webpack 5 的开发人员可以使用experiments.topLevelAwait选项。启动 Babel 7.7, @babel/preset-env 将自动启用 @babel/plugin-syntax-top-level-await(如果 caller 支持的话)。
默认情况下,每当遇到某些无效语法时,先前版本的 Babel 解析器都会引发错误。尽管这种行为适用于主要的 Babel 用例(比如,转译),但它会给来自其他 Babel 客户端(例如 babel-eslint 或 prettier)的其他用例带来一些不便。 Babel 7.7 在 @babel/parser 中添加了一个新的 errorRecovery 选项。当它设置为 true 时,生成的 AST 将具有 errors 属性,该属性包含了解析器能够从中恢复的所有错误。
Babel7.7 还改进了对TypeScript 3.7的支持。对于 Babel 中自 7.0 以来就支持的可选链(optional chaining) (a?.b) 和空值合并(nullish coalescing)(a ?? b),Babel 7.7 为开发人员提供了使用断言函数和对类字段declare的可能性:
“allowDeclareFields”标志提供了对类字段的 declare 支持,并且 @babel/plugin-transform-typescript 和 @babel/preset-typescript 都支持“allowDeclareFields”标志。
Babel 7.7.0 还提供了对新 babel.config.json 配置文件的支持,其作用与 babel.config.js 的相同。全新的 JSON 格式具有更好的可缓存性和可序列化性。
Babel 7.7 版本还附带了许多bug的修复和其他改进特性,包括内存使用方面的改进。
Babel 是基于 MIT 开源许可的。欢迎开发者通过Babel GitHub组织参与贡献,并且遵循 Babel 的贡献指南和行为准则。也可以通过Open Collective的方式进行捐款来支持该项目。
原文链接:
Babel 7.7 Released With Improved TypeScript Support, Top-Level Await and More
评论 1 条评论