본문 바로가기

개발하자

축소자와 유형 스크립트 결합에서 "유형 인수를 'ReduersMapObject' 유형의 매개 변수에 할당할 수 없습니다." 오류를 반환합니다

반응형

축소자와 유형 스크립트 결합에서 "유형 인수를 'ReduersMapObject' 유형의 매개 변수에 할당할 수 없습니다." 오류를 반환합니다

나는 react + redux + typescript로 프론트엔드 환경을 설정하려고 하지만 combineReducers로 작동하기 위해 애를 먹고 있다. 오류가 발생했습니다. 유형의 인수를 'ReducersMapObject' 유형의 매개 변수에 할당할 수 없습니다. 코드 아래의 전체 오류 메시지를 참조하십시오.

상태: (유형/index.tsx)

export namespace StoreState {

  export type Enthusiasm = {
    languageName: string;
    enthusiasmLevel: number;
  }

  export type All = {
    enthusiasm: Enthusiasm
  }
}

스토어: (store.tsx)

import { createStore } from 'redux';
import reducers from './reducers/index';
import { StoreState } from './types/index';

let devtools: any = window['devToolsExtension'] ? window['devToolsExtension']() : (f:any)=>f;

const Store = createStore<StoreState.All>(reducers, devtools);
export default Store;

리듀서: (/리듀서/Hello리듀서.tsx)

    import { EnthusiasmAction } from '../actions';
    import { StoreState } from '../types/index';
    import { INCREMENT_ENTHUSIASM, DECREMENT_ENTHUSIASM } from '../constants/index';

    export const enthusiasm = (state: StoreState.Enthusiasm, 
action: EnthusiasmAction): StoreState.Enthusiasm => {
      switch (action.type) {
        case INCREMENT_ENTHUSIASM:
            return { ...state, enthusiasmLevel: state.enthusiasmLevel + 1 };
        case DECREMENT_ENTHUSIASM:
            return { ...state, enthusiasmLevel: Math.max(1, state.enthusiasmLevel - 1) };
        default:
            return state;
     }
   }

콤바인 리듀서(/리듀서/index.tsx)

import { StoreState } from '../types/index';
import * as enthusiasmReducer from './HelloReducer';

import { combineReducers } from 'redux';

const reducer = combineReducers<StoreState.All>({
    enthusiasm: enthusiasmReducer
});

export default reducer;

enter image description here




감속기만 사용하지 않고 의 내보내기를 모두 사용하여 개체를 전달합니다. 그것을 고치는 몇 가지 방법이 있습니다. 감속기를 선택할 수 있습니다:

const reducer = combineReducers<StoreState.All>({
    enthusiasm: enthusiasmReducer.enthusiasm
});

또는 감속기만 가져옵니다:

import {enthusiasm} from './HelloReducer';
..
const reducer = combineReducers({enthusiasm});

또는 에 추가하고 가져오기를 변경합니다

import enthusiasmReducer from './HelloReducer';



나는 redux-perist와 함께 redux를 사용했을 때 비슷한 오류가 발생했다. 문제는 다음과 같습니다:

const reducers = combineReducers({
  reducer1,
  reducer2
})
const persistedReducers = persistCombineReducers({}, reducers)

알고 보니 환원제도 결합되어 있어서 이중 결합이 되어 있었습니다. 해결책은 결합된 환원제와 함께 사용하거나, 결합된 환원제를 직접 전달하고 사전 결합하지 않는 것입니다.


반응형