我现在有一个简单的减速器和动作类型。在设置我的测试时,我遇到了 type def 问题,返回 mystore
引用我的“自定义”操作类型声明。我看到一个错误:
类型 'Store<CombinedState<{ global: GlobalStateShape; }>, SetSelectedAccount >' 不可分配给类型 'Store<any, AnyAction>'。属性“调度”的类型不兼容
我已正确遵循Redux Typescript 文档AFAIK。
为什么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,如果我添加第二个动作,然后SetSelectedAccount
变成上面的返回类型,GlobalActionTypes
它是相同的结果和关于不匹配的错误消息dispatch
谢谢!