从 redux-toolkit 中使用 createAsyncThunk 创建的另一个 thunk 调度 thunk

Dispatch thunk from another thunk created with createAsyncThunk from redux-toolkit

这是一个更多的打字稿问题,但我的问题在 @redux/toolkitcreateAsyncThunk 方法中是特定的。调度 thunk 操作的 return 类型是什么?

const myService = (num: number) => Promise.resolve(num.toString());

const myAction = createAsyncThunk(
  'FOO', myService
)

const myFirstAction = createAsyncThunk<
  string, // return type
  number // param type
>('First', (num) => {
  return myService(num) // calling service directly so OK
})

const mySecondAction = createAsyncThunk<
  string, // WORKS because i'm calling unwrapResult on resolved value
  number, // param type
  {
    dispatch: AppDispatch,
  }
>('Second', (num, { dispatch }) => {
  return dispatch(myFirstAction(num)).then(unwrapResult)
})

const myThirdAction = createAsyncThunk<
  string, // FAILS ?? <- What type to use here
  number, // param type
  {
    dispatch: AppDispatch,
  }
>('Third', (num, { dispatch }) => {
  return dispatch(myFirstAction(num))
})

严格来说是

ReturnType< AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> >

但是,由于该类型未导出,

ReturnType< AsyncThunk<
  Returned,
  ThunkArg,
  ThunkApiConfig
> >

应该可以解决问题。

您可以查看此类型的来源 here