7.20.0 发布:Deno 编译目标与 TypeScript 4.9 支持
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
我们刚刚发布了 Babel 7.20.0!
本次发布包含对 TypeScript 4.9 的支持,并新增了对 Stage 2 提案 Import Reflection 和 Explicit Resource Management 的解析器支持。此外,您现在可以将 Deno 作为编译目标之一。
在过去几个版本中,我们持续改进了 @babel/generator 的代码位置追踪能力,从而提升了 source map 质量并优化了生成代码中注释的定位精度。
我们还发布了 Webpack 的 Babel 加载器 babel-loader 的 9.0.0 版本。
您可以在 GitHub 查看完整更新日志。
如果您或您的公司希望支持 Babel 和 JavaScript 的发展,但不确定如何操作,您可以通过 Open Collective 向我们捐款,或者更好的是,直接与我们合作实现新的 ECMAScript 提案!作为志愿者驱动的项目,我们依赖社区支持来资助为广泛 JavaScript 用户提供帮助的工作。如需进一步讨论,请通过 team@babeljs.io 联系我们!
重点更新
TypeScript 4.9 支持 (#14211)
TypeScript 4.9 引入了新关键字操作符 satisfies,该操作符允许您断言表达式符合指定类型而无需实际转换表达式:
let a = { x: 1, y: 2 } as const;
// ^ type is { x: 1, y: 2 }
let b = a satisfies { [key: string]: number };
// ^ type is still { x: 1, y: 2 }, and not { [key: string]: number }!
a satisfies { [key: string]: string };
// error! a does not satisfies that type
您可在 TypeScript 4.9 的发布说明中了解更多细节 😉。
当使用 @babel/plugin-transform-typescript 或 @babel/preset-typescript 时,Babel 现已支持解析并移除这些类型注解,助您快速启用新版 TypeScript。
Deno 编译目标支持 (#14944)
为 Deno 编译时,您可配置 @babel/preset-env 仅编译当前 Deno 版本不支持的特性。虽然 Deno 通常会及时支持最新 ECMAScript 特性,但您可能需要兼容旧版引擎。
您可通过 targets 选项启用此功能:
{
"targets": { "deno": "1.20" },
"presets": ["@babel/preset-env"]
}
babel-loader 9.0.0 发布
此新版 babel-loader 移除了对 Webpack < 5、Babel < 7.12 以及 Node.js < 14.15 LTS 的支持。
加载器选项不再支持通过查询参数配置:请改用 options 对象,而非内联方式指定选项(例如:loader: "babel-loader?presets=@babel/preset-env"):
{
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"]
}
}
您也可使用专用 Babel 配置文件,例如 babel.config.json。
若您未使用查询参数指定 Babel 选项,且正在使用较新版本的 Webpack、Babel 和 Node.js,则无需修改 Webpack 或 Babel 配置即可直接升级。