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

TypeScript报错ts(1163):无法识别生成器函数内的yield关键字如何解决?

报错根本原因

你遇到的A 'yield' expression is only allowed in a generator body.ts(1163)报错是ECMAScript和TypeScript对生成器函数的统一强制规则,和你当前的依赖版本、tsconfig配置没有关联。
规则核心要求很明确:yield关键字只能直接出现在用function*语法声明的生成器函数的直接作用域内,不能出现在该生成器内部嵌套的普通函数、箭头函数中。
你代码里的yield写在了forEach的回调箭头函数里,这个箭头函数是普通函数,不是带*声明的生成器函数,自然不符合规则要求,因此触发报错。

修复方案

直接把forEach遍历换成普通的for...of循环即可,保证yield处于生成器函数的直接作用域中:

function* generatorFunction(input: number[]): IterableIterator<number> {
  for (const num of input) {
    yield num;
  }
}

不推荐强行给forEach的回调加生成器声明,因为数组的forEach方法本身没有对生成器回调的执行支持,写了也不会正常迭代生效,用普通循环是最高效清晰的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:30:01