首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用typesafe操作的异步操作减缩器类型

使用typesafe操作的异步操作减缩器类型
EN

Stack Overflow用户
提问于 2018-11-14 15:14:55
回答 1查看 345关注 0票数 1

我在使用模块createAsyncAction ( typesafe-actions (台风行动) )时遇到了一些小困难,并且在还原器上键入了相同的

这是行动

代码语言:javascript
复制
export const login = createAsyncAction(
    EmployeeConstants.LOGIN.REQUEST,
    EmployeeConstants.LOGIN.SUCCESS,
    EmployeeConstants.LOGIN.ERROR
)<ILoginRequest,ILoginSuccess, Error>();

如您所见,这将创建一个异步操作构建器AsyncActionBuilder,而不是操作本身。

我的减速机就是这样打出来的

代码语言:javascript
复制
import * as loginActions from './actions';

type IEmployeeActions = ActionType<typeof loginActions>;

const employeeState = (state = initialState, action: IEmployeeActions) => {
  // switch cases
}

但我无法访问payloadtype (显然),因为loginActions是异步构建器的联合,而不是操作本身。

我该怎么解决这些问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 16:57:55

好的,我所拥有的实际上是正确的,但是在createAsyncAction中创建常量时,我的实现很糟糕。

我动态地生成了如下所示的常量:

代码语言:javascript
复制
function createAsyncTypes(type: string) {
    return {
        REQUEST: type + "_REQUEST",
        SUCCESS: type + "_SUCCESS",
        ERROR: type + "_ERROR"
    }
}

而TS服务器在链接过程中无法计算这一点,并且在链接过程中造成了混乱。

我把它们换成这个,

代码语言:javascript
复制
export const login = createAsyncAction(
    "LOGIN_REQUEST",
    "LOGIN_SUCCESS",
    "LOGIN_FAILURE"
)<ILoginRequest, ILoginSuccess, Error>();

而TS Server有效地显示了导出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53303355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档