1

現在、単純なレデューサーとアクションタイプがあります。テストをセットアップしているときにstore、「カスタム」アクション タイプ宣言を参照して my が返されるというタイプ定義の問題が発生しています。エラーが表示されます:

'Store<CombinedState<{ global: GlobalStateShape; と入力します。}>、SetSelectedAccount >' はタイプ 'Store<any, AnyAction>' に割り当てられません。プロパティ 'dispatch' のタイプに互換性がありません

私はRedux Typescriptのドキュメントを正しくフォローしています。

SetSelectedAccountを呼び出したときに が返されるのはなぜcombineReducers()ですか? はのglobalReducer処理アクションですSetSelectedAccount

上記のエラーが発生する私のテストセットアップファイルでは:

export function createTestStore(isInternal: boolean): Store {
  const store: Store<CombinedState<{
    global: GlobalStateShape;
    }>, SetSelectedAccount> = createStore(rootReducer, { global: 
     getGlobalInitialState(isInternal) });
  return store;
}

src/reducer.ts

export const rootReducer: Reducer<CombinedState<{
    global: GlobalStateShape;
}>, SetSelectedAccount> = combineReducers({
  global: globalReducer,
});

src/store.ts

const composedEnhancer = composeWithDevTools(
  applyMiddleware()
);

export const store: Store<CombinedState<{
  global: GlobalStateShape;
}>, SetSelectedAccount> = createStore(rootReducer, composedEnhancer);

global_reducer.ts:

export const globalReducer = (
  state = GLOBAL_INITIAL_STATE,
  action: GlobalActionTypes
): GlobalStateShape =>
  produce(state, draft => {
    switch (action.type) {
      case GlobalActions.SET_SELECTED_ACCOUNT: {
        draft.selectedAccountId = action.payload.accountId;
        break;
      }
    }
  });

アクション.ts

const SET_SELECTED_ACCOUNT = 'SET_SELECTED_ACCOUNT';

export const GlobalActions = {
  SET_SELECTED_ACCOUNT,
};

export interface SetSelectedAccount {
  type: typeof SET_SELECTED_ACCOUNT;
  payload: { accountId: string; selectedApp: AppsList };
}

export type GlobalActionTypes = SetSelectedAccount;

FWIW、2番目のアクションを追加すると、SetSelectedAccount上記の戻り値の型に変わりますGlobalActionTypesが、同じ結果と不一致に関するエラーメッセージが返されますdispatch

ありがとうございました!

4

1 に答える 1