我有一个配置的项目,其中包含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
做同样的事情
答案 0 :(得分:0)
我花了很多时间来寻找如何使TypeScript
与Immutable.js
成对使用的解决方案,但不幸的是,没有明确的/琐碎的解决方案(或者我没有找到)。
如果您是项目的开始并正在寻找其他选择,我强烈建议您看一下Immer库。它提供的功能大致相同,并且完美支持TypeScript
的键入。