【发布时间】:2020-05-03 06:05:15
【问题描述】:
我在我的 React TypeScript 应用程序中使用 combineReducers:
// combinedReducer.ts
import { combineReducers } from 'redux'
import reducer1 from './reducer1'
import reducer2 from './reducer2'
const combinedReducer = combineReducers({
reducer1,
reducer2,
})
export default combinedReducer
我从redux documentation 了解到combineReducers 应该根据组合减速器推断它的类型。
然而,对我来说它没有,即使每个组合的 reducer 都有它的返回类型被识别:
(ReturnType<typeof combidedReducer> 是 unknown)
这里出了什么问题?
这是我最大程度简化的减速器:
// reducer1.ts
const initialState: boolean = false
const reducer1 = (state = initialState): boolean => state
export default reducer1
// reducer2.ts
const initialState: boolean = false
const reducer2 = (state = initialState): boolean => state
export default reducer2
【问题讨论】:
-
这不是 Redux 的问题。那是您的 IDE/编辑器。从技术上讲, combineReducer 可以返回任何东西,因此它的返回值没有具体类型。您使用的任何编辑器都在查看该签名并尝试对其进行解释。看到 combineReducers 没有返回特定类型,它会向您报告它是“未知的”。我认为这与 Redux 无关。基于配色方案,看起来像 IntelliJ?是的,我也遇到了问题,所以我对所有前端的东西都使用 VSCode,它似乎更好地处理它
-
好吧,看看 redux 文档:redux.js.org/recipes/usage-with-typescript/… 他们像我一样使用
createReducer,但他们得到的返回类型为RootState = ReturnType<typeof rootReducer>。当我这样做时,我得到<unknown>。这不仅仅是 IDE,我无法运行我的代码,因为 tslint 正在抱怨。 AFAIK IDE 也从那里获取信息。 -
据我所知
combineReducers收集了多个reducer 函数名称与它们打算修改的全局商店属性相同
标签: reactjs typescript redux