循环能否使动作创建者使用有效载荷类型?

时间:2019-05-09 14:53:22

标签: typescript redux

我对Redux的唯一烦恼是创建一个新动作需要多少工作。在JS中,我创建了一个循环,该循环使我所有的动作创建者都从一个充满类型字符串的对象中为我服务:

export function buildActionCreators(types) {
  const creators = {};
  Object.values(types).forEach(type => {
    creators[camelCase(type)] = payload => ({ type, payload });
  });
  return creators;
}

我正在迁移到Typescript,我喜欢如何键入有效载荷—从而避免了向Redux reducer发送太少信息的常见错误。

我希望泛型允许我在buildActionCreators函数中键入有效载荷,但是TS不允许将类型作为值传递,这似乎意味着如果没有某种类型的代码生成器,这是不可能的。

这是我想做的一些伪代码:

export function buildActionCreators(typesMap): ActionCreatorsMap {
  const creators: ActionCreatorsMap = {};
  Object.keys(typesMap).forEach(StringType: string => {
    const PayloadType = typesMap[StringType];
    creators[camelCase(stringType)] = (payload: PayloadType) => ({
      type: StringType,
      payload
    });
  });
  return creators;
};

我对TS还是很陌生,所以也许有一种方法可以满足我的需求?感谢您的帮助!

0 个答案:

没有答案