7.16.0发布PESLint 8和TypeScript 4.5

127 阅读2分钟

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开始引入了对这些新类特性的支持。