我有一个配置了React,Redux,Immutable.js + TypeScript的项目。在实现期间,我试图尽可能多地声明类型,但发现了一个有趣的问题。请参见下面的代码示例:
redux存储的简短配置
import { createStore } from 'redux';
import { combineReducers } from 'redux-immutable';
const rootReducer = combineReducers({...});
const store = createStore(rootReducer);组件内部的某处
// ...
const mapStateToProps = (state: ReturnType<typeof rootReducer>) => {
// state is plain object :(
};在VS Code中的状态悬停时,工具提示显示状态是一个普通对象,但它不是。它应该是来自Immutable.js的自定义集合
如何获取正确类型的rootReducer?或者我做错了什么?
截图:


P.S. StateType和ReturnType做同样的事情
发布于 2019-05-15 23:05:13
我花了很多时间来寻找如何让TypeScript与Immutable.js成对工作的解决方案,不幸的是,没有明确的/微不足道的解决方案(或者我没有找到它)。
如果你刚开始你的项目,并且正在寻找一些替代方案,我强烈建议你看看Immer库。它提供了基本相同的功能,并且完美地支持TypeScript类型。
发布于 2021-10-04 12:07:57
这是可行的(不需要Immutable.js):
export type RootState = ReturnType<typeof rootReducer>;如果由于某种原因它不能工作,这个应该可以工作:
export type RootState = ReturnType<typeof store.getState>https://stackoverflow.com/questions/55978851
复制相似问题