如何在 NGRX Effect V10 中声明类型? 类 不再使用,因此无法推断类型

How to declare type in NGRX Effect V10? Classes no longer used so Type not inferred

因此,自从 V10 升级到 NGRX 后,您不能再将一种类型的 Action 传递给 effect,因为 Actions 现在被声明为函数而不是 classes。在 V10 中还有办法处理这个问题吗?

export const myAction = createAction(
    '[myAction]',
    props<{person: User}> ()
);

@Effect({ dispatch: false })
    x = this.actions$.pipe(
        ofType**<myAction>**('[myAction]'),

我无法访问人物道具。在第 10 版之前你做了什么,因为它是 class...

https://ngrx.io/guide/effects#incorporating-state

  1. myAction直接传给ofType
  2. 这个动作是根据它的 props 类型的,所以你可以直接使用 action.person
@Effect({ dispatch: false })
  x = this.actions$.pipe(
    ofType(myAction),
    map(action => of(action.person))
  );

此外,最好使用新的 createEffect 语法。

Stackblitz:https://stackblitz.com/edit/so-ngrx-oftype?file=index.ts