我目前对正在使用的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中的问题。
答案 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
希望有帮助