输入Redux操作创建者

时间:2019-10-01 08:19:30

标签: typescript redux redux-thunk

我目前对正在使用的react-redux应用程序中的动作创建者类型感到困惑。我让这个动作创建者在方程式的两边都有类型,TS编译器说一切都很完美:

const setItem: ActionCreator<ThunkResult<void>> = (...): ThunkResult<void> => (...): void => {
  dispatch({
    ...
  });
};

其中ThunkResult为ThunkResult<R> = ThunkAction<R, IStoreState, null, ActionTypes>

我不清楚为什么在左侧返回的函数类型为ActionCreator<ThunkResult<void>>,但是在右侧返回的是ThunkResult<void>

注意:我跳过了args,因为它们在这个问题中并不重要。

我不确定这是对TS functions的误解还是TS中的问题。

1 个答案:

答案 0 :(得分:1)

我可以让您更容易理解 首先,只需考虑 ActionCreator Type ,它将是

type ActionCreator<T> = (params) : T => T
// then you can defined the variable
const setItem: ActionCreator<string> = (params) : string => ""

ThunkResult

type ThunkResult<T> = (params): T => T
// then you can defined the variable
const thunk: ThunkResult<number> = (params): number => 0

因此,如果您将它们混合在一起,将会像这样

ActionCreator<ThunkResult<void>> = (params) : ThunkResult<void> => ThunkResult<void>
// and 
ThunkResult<void> = (params):void => void
// so
ActionCreator<ThunkResult<int>> = (params): ThunkResult<void> => (params2): void => void // just replace ThunkResult<void> above with (params):void => void

希望有帮助