現在、単純なレデューサーとアクションタイプがあります。テストをセットアップしているときに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
ありがとうございました!