Redux升级至5.0.0后CombinedState导出缺失的替代方案咨询
Redux升级至5.0.0后CombinedState导出缺失的替代方案咨询
我来帮你搞定这个Redux升级后的类型问题!Redux 5.0.0确实移除了CombinedState这个导出类型,不过不用慌,针对你的代码场景,有几个非常直接的解决办法:
方案一:用实际的业务状态类型替换(最推荐)
你这段代码里的reducer负责的是AppState["projShare"]这个明确的分片状态,本来就不需要用CombinedState——它原本是用来描述多个reducer合并后的根状态类型的,用在单个分片reducer上属于误用。直接把reducer的泛型参数换成你已经定义好的具体状态类型就行,同时还能去掉不安全的
any类型:// 修改后的reducer定义部分 const ProjectShareReducer: Reducer<AppState["projShare"], AnyAction> = (state = initState, action: AnyAction) => { // 原有的switch逻辑保持不变 switch (action.type) { case "GET_COLLAR_USERS": return { ...state, collar: action.data, }; default: break; } return state; };这样不仅解决了导出缺失的错误,还让类型检查更精确,一举两得。
方案二:自定义CombinedState类型(仅当有特殊需求时使用)
如果你在项目的其他地方确实需要类似CombinedState的通用类型,可以自己在项目里简单定义一个——它的本质就是一个描述合并后状态结构的对象类型:type CombinedState<S> = S extends undefined ? {} : { [K in keyof S]: S[K] };不过回到你当前的这个reducer代码,这个方案其实完全没必要,方案一就已经完美解决问题了。
另外补充一句:Redux 5.0.0在类型系统上做了不少精简,移除了很多非必要的框架辅助类型,核心目的就是引导开发者使用更具体的业务类型,避免依赖宽泛的通用类型,让类型检查更贴合实际业务逻辑。
内容来源于stack exchange
相关产品推荐
相关产品推荐

