使用Typescript将Thunk分发到商店

时间:2018-11-27 08:29:56

标签: javascript reactjs typescript redux redux-thunk

在我的主要商店中。我有这个:

const store = createStore(
  rootReducer,
  composeWithDevTools(applyMiddleware(thunk))
);

store.dispatch(fetchUser());

因此,在第一个渲染器上,它向fetchUser调度并执行操作,以查看他/她是否可以看到内容。

这是重击:

export const fetchUser = (): ThunkAction<
  void,
  TRootState,
  null,
  Action
> => async dispatch => {
  const response = await axios.get(GET_USER_INFORMATION);

  dispatch({
    type: FETCH_USER,
    payload: response.data
  });
};

但是Typescript会引发错误:

src/store/index.ts
(14,16): Argument of type 'ThunkAction<void, { userReducer: any; }, null, Action<any>>' is not assignable to parameter of type 'AnyAction'.
  Property 'type' is missing in type 'ThunkAction<void, { userReducer: any; }, null, Action<any>>'.

store / index.ts第14行:

store.dispatch(fetchUser())

老实说,我迷路了。我该如何解决?我不想在thunk中输入“ any”。

1 个答案:

答案 0 :(得分:0)

store.dispatch仅接受一个动作,不接受任何功能。但重击将其覆盖。您需要指定thunk类型。

尝试

composeWithDevTools(applyMiddleware(thunk as ThunkMiddleware<RootState, RootAction>))

另外,请选中此official docs