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

Redux/Saga中yield与*语法问题:如何解决类型注解报错?

解决Redux Saga生成器函数的TypeScript类型报错

问题代码

import { all } from 'redux-saga/effects'

import cart from './cart/sagas'

export default function* rootSaga() {
return yield all([
cart,
])
}

报错信息:‘yield’表达式隐式生成‘any’类型,因为其所在生成器缺少返回类型注解。

解决方法

TypeScript无法自动推断Redux Saga生成器函数的类型,需显式添加类型注解。修改后的代码如下:

import { all, ForkEffect, Generator } from 'redux-saga/effects'
import cart from './cart/sagas'

export default function* rootSaga(): Generator<ForkEffect<never>, void, unknown> {
  yield all([
    cart,
  ])
}

说明

  • 导入ForkEffect和Generator类型,明确生成器函数的类型约束
  • Generator<ForkEffect<never>, void, unknown>的三个泛型参数分别对应:
    1. ForkEffect<never>:yield表达式产生的值的类型(即all执行后返回的saga副作用类型)
    2. void:生成器函数的返回类型(无需返回值时用void)
    3. unknown:调用生成器next()方法时传入的值的类型(无特殊需求时用unknown即可)

另外,原代码中的return yield all(...)可简化为yield all(...),因为yield all会阻塞直到所有子saga执行完成,返回语句无实际作用。

内容的提问来源于stack exchange,提问作者Cristiano Pereira da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:20:30