如何动态生成Redux动作的类型?

时间:2019-01-31 19:25:42

标签: typescript

我正在尝试为Redux创建与网络请求相对应的操作。所以,我的目标是:

GET_USERS_STARTED
GET_USERS_COMPLETED
GET_USERS_ERRORED

作为可能的操作类型。目前,我可以执行以下操作:

export type reduxActions = typeof GET_USERS_STARTED | typeof GET_USERS_COMPLETED | typeof GET_USERS_ERRORED;

但是我的目标是使用一些动态编程,所以我可以做类似的事情:

function networkRequestable(str) {
  return [ `${str}_STARTED`, `${str}_COMPLETED`, `${str}_ERRORED`];
}

export type reduxActions = networkRequestable(GET_USERS)

然后,组件,Reducer等可以依赖GET_USERS_STARTED等的签名,而不必为可能发生的每个API操作写出类型。

我看过接口和自定义防护检查,但是我认为接口太“开放”,而防护检查只是在运行时才强制转换为现有类型。

我不确定是否有办法做到这一点,或者我是否只是在错误考虑TypeScript。感谢您的指导!

0 个答案:

没有答案