gpt4 book ai didi

angular - 从 - "createAction"函数获取类型

转载 作者:行者123 更新时间:2023-12-05 08:05:30 25 4
gpt4 key购买 nike

有两种创建 ngrx Action 的方法。一种是定义一个实现 Action 类的新类,另一种是使用“createAction”函数。有没有办法获取使用“createAction”方法创建的操作的类型?

例如,如果我有这个 Action :

export const getWorker = createAction(
'[Worker Api] Get Worker',
props<{ workerId: number }>()
);

我想在监听该 Action 的效果中获取 workerId:

getWorker$ = createEffect(() => {
return this.actions$.pipe(
ofType(WeatherApiActions.getWorker),
switchMap((action: { type: string, workerId: number }) => this.workerService.getWorker(action.workerId)),
map((worker: IWorker) => WeatherApiActions.getWorkerSuccess({ worker }))
)})

和你一样,我不得不自己写类型。这使得效果与 Action 紧密耦合,这是一个巨大的缺点。所以我的问题是:我是否必须使用第一种创建操作的方法才能进行操作负载类型化?

最佳答案

当我想在我的效果中分享一些代码并弄清楚时,我确实需要它。

你的问题的答案是,不。你可以用一个简单的代码来获取 Action 类型。

使用 ReturnType实用程序类型,您可以从 createAction 创建的函数中提取 Action 类型.

创建如下 Action ,

const getWorker = createAction(
'[Worker Api] Get Worker',
props<{ workerId: number }>()
);

ReturnType<typeof getWorker>结果为类型 { workerId: number } & TypedAction<'[Worker Api] Get Worker'> .

如果你看ofType的声明代码库中的运算符函数,你会看到它也使用 ReturnType效用。

关于angular - 从 - "createAction"函数获取类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64941048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com