You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ES6+类中定义异步生成器成员函数?ESLint配置疑问

问题解答

一、纯ES6+类支持异步生成器成员函数吗?

当然支持。异步生成器(async function*)是ES2018纳入标准的特性,Node.js从v10版本开始就已支持,Node18+环境完全兼容该语法。你写的这段代码:

class A {
  async *mygenerator() {}
}

在纯JS环境里是完全合法可运行的,不需要额外转译。

二、ESLint配置:如何阻止该语法被识别为有效(即禁止使用)

如果你的需求是让ESLint把类中的异步生成器成员函数标记为错误(禁止使用该语法),可以通过以下配置实现:

使用no-restricted-syntax规则拦截

在ESLint配置的rules中添加该规则,精准匹配类中的异步生成器方法:

"no-restricted-syntax": [
  "error",
  {
    "selector": "MethodDefinition[value.type='AsyncGeneratorFunction']",
    "message": "禁止在类中定义异步生成器成员函数"
  }
]

配置生效后,只要代码中出现类的异步生成器方法,ESLint就会抛出错误提示。

附:如果是ESLint误报该语法不合法

要是你之前遇到的是ESLint错误判定合法语法为违规的情况,需要调整配置让ESLint认可该语法:
你的当前配置里ecmaVersion已设为2022,本身支持异步生成器,但node/no-unsupported-features/es-syntax规则可能未适配Node18特性。修改该规则:

"node/no-unsupported-features/es-syntax": [
  "error",
  {
    "ignores": ["modules", "asyncGenerators"],
    "version": "18.0.0"
  }
]

指定version: "18.0.0"后,ESLint会按照Node18的特性支持列表做检查,不会再对异步生成器语法报错。


内容的提问来源于stack exchange,提问作者Loopilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:40:26