Reactjs Redux+TypeScript+typesafe操作:createReducer/handleAction出错,参数1无效

Reactjs Redux+TypeScript+typesafe操作:createReducer/handleAction出错,参数1无效,reactjs,typescript,redux,typesafe-actions,Reactjs,Typescript,Redux,Typesafe Actions,我按照上的教程创建了最简单的TypeScript/Redux项目,但是我无法让它工作。我一直在犯错误 错误:参数1无效,它应该是类型安全操作或类型为:string | symbol的操作类型的操作创建者实例 当我尝试访问页面时,Typescript很高兴,代码可以传输 这是我的reducer.ts Single reducer,应该用新数据覆盖存储。这似乎是错误的来源,handleAction的第二个参数 从操作导入{setData}; 从类型安全操作导入{createReducer}; con

我按照上的教程创建了最简单的TypeScript/Redux项目,但是我无法让它工作。我一直在犯错误

错误:参数1无效,它应该是类型安全操作或类型为:string | symbol的操作类型的操作创建者实例

当我尝试访问页面时,Typescript很高兴,代码可以传输

这是我的reducer.ts Single reducer,应该用新数据覆盖存储。这似乎是错误的来源,handleAction的第二个参数

从操作导入{setData}; 从类型安全操作导入{createReducer}; const dataReducer=createReducer{}.handleAction setData, 状态,action=>action.payload.newData ; 导出默认数据缩减器; 下面是我尝试使用action和createAction的actions.js文件,没有区别:

从类型安全操作导入{action,createAction}; 从常量导入{SET_DATA}; export const setData=newData:string=>actionSET_DATA,{newData}; constants.ts是一个简单的单行程序, 导出常量集合数据=集合数据

根据教程,我正试图在我的Reducer代码中使用这个花式,所以我还有一个types.d.ts文件

//类型d.ts 从类型安全操作导入{StateType,ActionType}; 导出类型RootAction=ActionType; 声明模块类型安全操作{ 接口类型{ RootAction:RootAction; } } 据我所知,这应该适用于一个非常简单的示例。我做错了什么

供参考的版本:

"react": "^16.13.1",
"redux": "^4.0.5",
"react-redux": "^7.2.1",
"typescript": "~3.7.2"
"typesafe-actions": "^5.1.0"

虽然这并不是严格地回答你的问题:

我们特别建议使用,而不是类型安全操作。RTK已经在TS中编写,并且在TS应用程序中非常有效

作为其中的一部分,RTK将根据您定义的减缩器,从CreateSicle函数生成正确类型的动作创建者

您可以使用RTK快速设置一个全新的项目,RTK已经配置为设置存储并键入RootState

此外,我们建议不要尝试遵循typesafe操作文档中列出的一些模式,例如尝试定义所有可能操作类型的联合。这种方法真的没有什么好处


有关如何正确使用Redux Toolkit和React Redux hooks API的说明,以及。

虽然这并不是严格回答您的问题:

我们特别建议使用,而不是类型安全操作。RTK已经在TS中编写,并且在TS应用程序中非常有效

作为其中的一部分,RTK将根据您定义的减缩器,从CreateSicle函数生成正确类型的动作创建者

您可以使用RTK快速设置一个全新的项目,RTK已经配置为设置存储并键入RootState

此外,我们建议不要尝试遵循typesafe操作文档中列出的一些模式,例如尝试定义所有可能操作类型的联合。这种方法真的没有什么好处

有关如何正确使用Redux工具包和React Redux hooks API的说明,请参阅