webpack/TypeScript/React项目集成Redux报错TS2769:无匹配重载调用
问题解决步骤
该TS2769错误本质是Redux相关类型推断不匹配、泛型缺失导致的,按以下步骤修复即可:
步骤1:修复入口文件语法错误+显式指定Provider泛型
你当前入口文件的<App />后有多余的逗号,会引发异常的语法解析,同时需要给Provider显式传入RootState泛型修正类型匹配:
// src/index.tsx import * as React from 'react'; import { render } from 'react-dom'; import App from './components/App'; import { Provider } from 'react-redux'; import { store, RootState } from './store/index' render ( {/* 显式指定Provider泛型为根状态类型 */} <Provider<RootState> store={store}> <App /> </Provider>, document.getElementById('root') );
步骤2:在Store配置文件中补充类型导出
给store添加全局RootState和AppDispatch类型定义,供TS做类型推断:
// src/store/index.ts import { rootReducer } from "./reducers"; import thunk from 'redux-thunk'; import { applyMiddleware, createStore } from "redux"; // 新增以下两个类型导出 export type RootState = ReturnType<typeof rootReducer> export type AppDispatch = typeof store.dispatch export const store = createStore(rootReducer, applyMiddleware(thunk));
步骤3:修复依赖版本兼容问题
如果上述两步操作后仍报错,说明你安装的@types/react-redux等类型包和当前项目依赖版本不兼容,执行以下命令重装稳定匹配版本即可:
# 卸载旧版本类型包 npm uninstall @types/react-redux @types/redux-thunk # 安装兼容稳定版本 npm install @types/react-redux@7.1.24 @types/redux-thunk@2.3.1 -D
注:错误提示中提到的
__self是React编译阶段自动注入的内部属性,该报错只是类型不匹配的衍生问题,完成上述修复后会自动消失,不需要单独处理。
内容的提问来源于stack exchange,提问作者Magamed
相关产品推荐
相关产品推荐

