7.16.0 发布:支持 ESLint 8 和 TypeScript 4.5
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
我们刚刚发布了 Babel 7.16.0!
本次更新默认启用了类的静态初始化块,新增支持管道操作符提案的新变体,并兼容 TypeScript 4.5。
此外,@babel/eslint-parser 现已支持 ESLint 8。
您可在 GitHub 查阅完整更新日志。
如果您或您的公司希望支持 Babel 和 JavaScript 的发展,但不确定如何操作,您可以通过 Open Collective 向我们捐款,或者更好的是,直接与我们合作实现新的 ECMAScript 提案!作为志愿者驱动的项目,我们依赖社区支持来资助为广泛 JavaScript 用户提供帮助的工作。如需进一步讨论,请通过 team@babeljs.io 联系我们!
重点更新
默认启用类的静态块 (#13713)
class MyClass {
static {
doSomeInitialization(MyClass);
console.log("MyClass initialized!");
}
}
静态块已于今年八月进入 Stage 4,现已在 @babel/parser 和 @babel/preset-env 中默认启用。
若您曾使用 classStaticBlock 解析器插件或 @babel/plugin-syntax-class-static-block,可安全地从配置中移除。
若您已使用 @babel/preset-env,现可移除配置中的 @babel/plugin-proposal-class-static-block。
TypeScript 4.5 特性支持 (#13802, #13838)
TypeScript 4.5 引入了新的类型导入标记语法:无需标记整个导入语句,您可单独标记特定导入项:
// TypeScript 4.4
import type { Foo } from "my-module";
import { fooInstance } from "my-module";
// TypeScript 4.5
import { type Foo, fooInstance } from "my-module";
同时新增支持 .mts 和 .cts 文件扩展名,分别对应 .mjs 和 .cjs。当启用 @babel/preset-typescript 并将 .mts 或 .cts 文件传递给 Babel 时,Babel 将通过扩展名自动识别源码类型("module" 或 "script")。
默认情况下,.mts 和 .cts 文件不支持 JSX 代码,且不能包含与 JSX 语法冲突的 TypeScript 注解(如 <Type> cast 和 <T>() => {})。
完整 TypeScript 4.5 发布说明请参阅官方博客。
Hack 风格管道操作符支持 ^ 主题标记 (#13749)
管道操作符提案的倡导者们正在评估多种主题标记方案(即引用前序管道步骤值的语法)。
@babel/plugin-proposal-pipeline-operator(及 "pipelineOperator" 解析器插件)现已支持三种标记:#、^ 和 %。
let values = getNames()
|> ["default"].concat(^)
|> await loadValues(^);
您可以通过 proposal: "hack" 选项启用当前版本的管道运算符提案,并使用 topicToken: "^" 指定主题标记:
{
"plugins": [
["@babel/plugin-proposal-pipeline-operator", {
"proposal": "hack",
"topicToken": "^"
}]
]
}
@babel/eslint-parser 支持 ESLint 8 (#13782)
@babel/eslint-parser 现已支持 ESLint 8:只需更新您的 "eslint" 依赖即可正常使用。
如果您是 ESLint 插件开发者,请注意类字段和私有方法的 AST 存在破坏性变更:使用 ESLint 7 时遵循 Babel AST 结构;使用 ESLint 8 时则遵循 ESLint 的 ESTree 规范。这是因为 ESLint 从 8.0 版本开始原生支持这些新的类特性。