7.16.0发布——ESLint 8和TypeScript 4.5
我们刚刚发布了Babel 7.16.0!
该版本默认启用了类静态初始化块。它包括对管道操作者提案的新变体的支持,以及TypeScript 4.5的兼容性。
此外,@babel/eslint-parser 现在支持ESLint 8。
你可以在GitHub上阅读整个更新日志。
如果你或你的公司想支持Babel和JavaScript的发展,但不确定如何支持,你可以在我们的开放集体中为我们捐款,更好的是,直接与我们一起实现ECMAScript的新提案作为一个志愿者驱动的项目,我们依靠社区的支持来资助我们支持广大的JavaScript用户。如果你想讨论更多,请联系team@babeljs.io!
亮点
默认启用类静态块
class MyClass {
static {
doSomeInitialization(MyClass);
console.log("MyClass initialized!");
}
}
静态块,在8月达到了第四阶段,现在在@babel/parser 和@babel/preset-env 中默认启用。
如果你正在使用classStaticBlock 解析器插件,或者@babel/plugin-syntax-class-static-block ,你可以安全地从你的配置中删除它们。
如果你已经使用了@babel/preset-env ,你现在可以从你的配置中删除@babel/plugin-proposal-class-static-block 。
TypeScript 4.5的特点
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 。当把.mts 或.cts 文件传给Babel并启用@babel/preset-typescript 时,它使用文件扩展名来检测所需的源类型("module" 或"script" )。
.mts 和 文件默认不能包含JJSX代码,但它们不能包含与JJSX有歧义的TypeScript注释 ( 和 )。.cts``<Type> cast <T>() => {}
你可以在他们的博客上阅读完整的TypeScript 4.5发布帖子。
^ 哈克式管道的主题标记
管道操作者提案的冠军们正在考虑各种话题标记(对前一个管道步骤的值的引用)。
@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
@babel/eslint-parser 现在支持ESLint 8:你可以更新你的 依赖关系,它就可以工作了。"eslint"
如果你是ESLint插件的作者,请注意类字段和私有方法的AST的突破性变化:当使用ESLint 7时,它们遵循Babel的AST形状;当使用ESLint 8时,它们遵循ESLint和ESTree规范。这是因为ESLint从ESLint 8开始引入了对这些新类特性的支持。