如何使CombineReducers与Flowtype一起使用?

时间:2019-02-24 00:25:32

标签: redux flowtype

我想使用redux中的CombineReducers函数。 但是我收到以下错误消息:

Missing type annotation for `A`. `A` is a type parameter declared in function type [1] and was implicitly instantiated
at call of `combineReducers` [2].

   src/reducer/index.js:12:16
   12| export default combineReducers({ message })
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [2]

References:
   flow-typed/npm/redux_v4.x.x.js:56:42
   56|   declare export function combineReducers<O: Object, A>(reducers: O): CombinedReducer<$ObjMap<O, <S>(r: Reducer<S, any>) => S>, A>;
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [1]

我的reducer只是一个带有状态和动作并返回的函数 一个新的状态。

然后,如错误消息中所示,我只在减速器上调用combineReducers

有人知道对此的简单修复程序吗?

1 个答案:

答案 0 :(得分:2)

我找到了解决方法。

您必须以某种方式键入化简器的结果。 您实际上可以做两件事,第一件事是:

export default combineReducers<*, *>({ message })

对我来说,这就像是黑客。 更好的解决方案是:

type State = {
    message: MessageState
}
const reducers: Reducer<State, Action> = combineReducers({ message })
export default reducers

但是,这要求您跟踪状态和操作的类型, 您仍然应该这样做。