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

TypeScript中如何正确标注调用其他生成器的生成器函数类型

可以使用ES6内置的yield*生成器委托语法实现,无需手动循环遍历,同时保留生成器函数的*标识:

class MyWrapper {
  *generator(): Generator<Foo, void> {
    yield* utils.myGenerator();
  }
}

yield* 可以直接把外层生成器的迭代逻辑委托给内层的可迭代对象(这里就是utils.myGenerator()返回的生成器实例),既没有冗余的包装代码,类型也能完美匹配,不会触发类型报错。
你之前尝试直接return内层生成器实例报错的原因是:生成器函数中return的返回值对应Generator<T, TReturn, TNext>泛型的第二个参数TReturn,你的定义中该参数为void,自然不允许返回Generator<Foo, void>类型的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:24:04