如何获取rootReducer的类型?

时间:2019-05-04 01:54:11

标签: reactjs typescript immutable.js redux-immutable

我有一个配置的项目,其中包含ReactReduxImmutable.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?还是我做错了?

屏幕截图:

Hovered mouse over state variable

Hovered mouse over emphasized get method

P.S。 StateTypeReturnType做同样的事情

1 个答案:

答案 0 :(得分:0)

我花了很多时间来寻找如何使TypeScriptImmutable.js成对使用的解决方案,但不幸的是,没有明确的/琐碎的解决方案(或者我没有找到)。

如果您是项目的开始并正在寻找其他选择,我强烈建议您看一下Immer库。它提供的功能大致相同,并且完美支持TypeScript的键入。