【发布时间】:2021-05-28 03:38:54
【问题描述】:
仍在尝试学习这种打字系统,不确定是否可行。
我正在使用 redux 和 redux 工具包,其中提到在创建 redux 存储后,您可以创建存储的调度和状态的类型化版本。
直接来自他们的网站:
import { configureStore } from '@reduxjs/toolkit'
// ...
const store = configureStore({
reducer: {
one: oneSlice.reducer,
two: twoSlice.reducer
}
});
// Infer the `RootState` and `AppDispatch` types from the store itself
export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch
我的问题是我需要推迟商店的配置。
import { configureStore } from '@reduxjs/toolkit'
// ...
const createStore = () => configureStore({
reducer: {
one: oneSlice.reducer,
two: twoSlice.reducer
}
});
// in some other class ///
const store = createStore();
有没有办法让第一种方法中提到的类型在代码中实际使用?
编辑
我希望能够在最后一个示例中注释 store 常量。
【问题讨论】:
-
我不确定我是否理解。是要在上一个示例中显式注释
store的类型还是要注释createStore的返回类型? -
@AluanHaddad 我想在最后一个例子中注释
store的类型 -
在第二个示例中,将
export type MyStore = ReturnType<typeof createStore>;添加到导出createStore的模块中。然后您可以导入类型并使用。我认为这是一种不好的做法。类型推断是你的朋友 -
我确实修改了它,但实际上是
export type AppState = ReturnType<ReturnType<typeof createStore>['getState']>;。你的方式给了我返回类型() => state我需要state -
几天前我回答了一个非常相似的问题stackoverflow.com/a/66324900/10431574 在那个问题中,他们希望选项以初始状态传递,因此它与@Aluan 的答案略有不同,但大部分相同。
标签: typescript redux types