You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

next-redux-wrapper中MakeStore报需1个类型参数TS2314错误

问题描述

使用next-redux-wrapper配置store时出现TypeScript报错,报错信息:

Generic type 'MakeStore' requires 1 type argument(s) .ts(2314)

原configureStore.ts文件代码如下:

import {
  configureStore,
  EnhancedStore,
  getDefaultMiddleware,
} from '@reduxjs/toolkit';
import { MakeStore } from 'next-redux-wrapper';
import { Env } from '../constants';
import { rootReducer, RootState } from './reducers';
import logger from 'redux-logger';

const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware()
      .concat(logger),
  devTools: Env.NODE_ENV === 'development',
});

export const makeStore: MakeStore = (_?: RootState): EnhancedStore => store;
报错原因

next-redux-wrapper 中导出的MakeStore是泛型类型,要求必须传入1个类型参数(对应store的根state类型),原代码直接使用无泛型参数的MakeStore做类型标注,不符合类型定义要求,因此触发TS2314错误。

修复方法

给MakeStore传入已定义的RootState作为泛型参数即可,同时可以删掉冗余的EnhancedStore返回值标注,TS会自动从configureStore的返回结果推导正确的store类型。

修复后的代码:

import {
  configureStore,
} from '@reduxjs/toolkit';
import { MakeStore } from 'next-redux-wrapper';
import { Env } from '../constants';
import { rootReducer, RootState } from './reducers';
import logger from 'redux-logger';

const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(logger),
  devTools: Env.NODE_ENV === 'development',
});

// 传入RootState作为MakeStore的必填泛型参数
export const makeStore: MakeStore<RootState> = (_?: RootState) => store;

注:原代码顶部冗余导入的getDefaultMiddleware、EnhancedStore没有实际使用,可以直接删除,不会影响功能。

内容的提问来源于stack exchange,提问作者Abdul Mahamaliyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:12:29