在Typescript

时间:2018-09-01 14:58:14

标签: reactjs typescript redux react-redux

我有一个大型的,复杂的应用程序,正在尝试迁移到Typescript。我们有一个特殊的约束,就是我们利用createProvider和storeKey选项将容器连接到商店。鉴于我们拥有100个容器以北,因此我创建了一个辅助函数,默认情况下会自动传递此选项。它非常简单,并且可以像常规JS中所预期的那样工作。

function connectToStore(mapStateToProps, mapDispatchToProps, mergeProps, options = {}) {
     const finalOpts = { ...options, storeKey: STORE_KEY };
     return connect(mapStateToProps, mapDispatchToProps || {}, mergeProps, finalOpts);
}

如何键入此功能?我已经看过了连接的类型声明的噩梦,并且想知道是否仍然有一些方法可以避免重现原始用途。当然,必须有一种更简洁的方法。谢谢!

2 个答案:

答案 0 :(得分:0)

react-redux unittest.main()有很多重载,并且某些辅助类型别名是多个替代的并集;我想您只需要其中一些情况(例如,仅包含四个参数的重载)。如果您遇到这种情况,请复制connect的键入内容,然后开始注释我认为不适用于connect的案例。成功检查所有对connectToStore的呼叫后,您可以删除已注释掉的案例。

答案 1 :(得分:0)

import { Connect } from "react-redux";

const connectToStore: Connect = (
  mapStateToProps,
  mapDispatchToProps,
  mergeProps,
  options = {}
) => {
  const finalOpts = { ...options, storeKey: STORE_KEY };
  return connect(
    mapStateToProps,
    mapDispatchToProps || {},
    mergeProps,
    finalOpts
  );
};