新的typescript-我已经根据redux根减少器的状态定义了我的全局状态。这一直很有效,直到我决定使用连接路由器——它为根减少器添加了一些东西——现在我不确定如何声明全局状态。
例如。。。这是我的全局状态类型:
import { StateType } from "typesafe-actions";
declare global {
export type SpaceState = StateType<
typeof import("./root_reducer").rootReducer
>;
}
如果我将鼠标悬停在rootReducer上,我可以看到我需要访问的属性:
const rootReducer: (history: History<unknown>) => Reducer<CombinedState<{
router: RouterState<unknown>;
ui: State;
auth: State;
}>, AnyAction>
尽管在创建一个redux选择器来访问我的属性时,我遇到了一个typescript错误。首先是我的选择器,错误出现在.ui
属性下。
export const sidebarStatus = (state: SpaceState) => state.ui.sidebarShow;
这是我得到的错误:
Property 'ui' does not exist on type 'Reducer<CombinedState<{ router: RouterState<unknown>; ui: State; auth: State; }>, AnyAction>'.
我假设,由于我添加了连接路由器,我需要以不同的方式声明我的全局状态,但不知道如何做到这一点。感谢您在正确的方向上提供的任何帮助或指导。
啊!必须使用ReturnType
import { StateType } from "typesafe-actions";
declare global {
export type SpaceState = StateType<
ReturnType<typeof import("./root_reducer").rootReducer>
>;
}