我正在尝试为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。感谢您的指导!