Typescript 即使安装了redux thunk,调度仍在等待操作?

Typescript 即使安装了redux thunk,调度仍在等待操作?,typescript,react-native,redux-thunk,Typescript,React Native,Redux Thunk,我正在尝试在一个基于类型脚本的React原生项目中使用redux thunk。我的行为被定义为 导出类型操作={ 类型:T, 有效载荷?:有吗 } 我的商店被定义为 从'redux'导入{applyMiddleware,createStore} 从“redux persist”导入{persistStore} 从“redux thunk”导入thunk 从“src/redux/middleware/logger”导入记录器 从“src/redux/reducers”导入rootReducer

我正在尝试在一个基于类型脚本的React原生项目中使用redux thunk。我的行为被定义为

导出类型操作={
类型:T,
有效载荷?:有吗
}
我的商店被定义为

从'redux'导入{applyMiddleware,createStore}
从“redux persist”导入{persistStore}
从“redux thunk”导入thunk
从“src/redux/middleware/logger”导入记录器
从“src/redux/reducers”导入rootReducer
export const store=createStore(rootReducer、applyMiddleware(logger、thunk))
导出常量persistor=persistStore(存储)
我的动作构造函数定义为

export const setRepeat=(repeat:Repeating)=>(
调度:调度,
getState:()=>AppState
) =>
派遣({
有效载荷:重复,
类型:actionTypes.SET\u REPEAT,
})
重复
是一个简单的枚举:

导出枚举重复{
All='All',
None='None',
Single='Single',
}
当我试图用

store.dispatch(setRepeat('all'作为重复))
我得到这个错误

TS2345: Property 'type' is missing in type '(dispatch: Dispatch<Action<string>>, getState: () => AppState) => Action<string>' but required in type 'Action<string>'.
TS2345:类型“(分派:分派,getState:()=>AppState)=>Action”中缺少属性“type”,但类型“Action”中需要该属性。
据我所知,这意味着
setRepeat
正在返回一个函数(这很有意义,这就是它的定义)。但是
store.dispatch
不需要redux thunk允许的功能,仍然需要
操作

我似乎找不到任何解释来解释为什么thunk没有在这里提供正确的类型,或者我需要做什么来纠正这个问题

  • 反应本机:0.57.7
  • redux:4.0.1
  • react-redux:6.0.0
  • redux thunk:2.3.0

总之,您需要添加以下类型:

const store = createStore(
rootReducer,
applyMiddleware(
    thunk as ThunkMiddleware<IState, Actions>, // this is crucial
));

我需要更多地查看您的代码,但您的做法似乎有点错误。

您能提供重复的界面吗?我知道出了什么问题,但需要代码来确认,谢谢。是的,我在中添加了。是的。redux thunk添加了一个中间件,这样动作创建者就可以返回一个函数来进行计算,然后再进行分派(或不分派)。问题是,
store.dispatch
似乎没有将此更改考虑在内的类型签名。我的问题是“这是我的错还是redux thunk的错,不管怎样,我能做什么?”您已将Dispatch键入类型Action,但传递到函数
dispatcherInstance
中的Dispatch实例不是类型Action。Thunk在这里没有这种类型:请看这期已结束的文章
store.dispatch(setRepeat('all' as Repeating)(dispatcherInstance,getStateFunction))