ngrx的映射工具

时间:2017-03-15 11:47:33

标签: angular typescript ngrx

目前,我正在DTO和州实体之间手动(通过代码)进行映射。我的意思是:

@Effect({ dispatch: true })
userLogin$: Observable<Action> = this._actions$
  .ofType('USER_LOGIN')
  .switchMap((action: Action) =>
    this._userService.checkPasswd(action.payload.username, action.payload.password)
      .map((user: UserDTO) => {
        return { type: 'USER_LOGIN_SUCCESS', payload: <IUser>{ id:user.id, cname:user.cname, sname:user.sname, username:user.username } };
      })
      .catch((err: ApiError) => {
        //...
      })
);

如你所见:

payload: <IUser>{ id:user.id, cname:user.cname, sname:user.sname, username:user.username }

我想更优雅地使用它,并使用任何映射库或工具。尽管如此,还是有任何最佳实践。

1 个答案:

答案 0 :(得分:2)

对我们有用的最佳解决方案是使用Typescript装饰器为DTO类建模并自己定义映射规则。 以下是可以为您提供指导的内容:

json-typescript-mapper

TypedJSON

你基本上需要注释类和属性,以使大多数场景工作没有太多麻烦。但对于高级类型,它可能需要自定义序列化器和反序列化器。它并不难,但需要一些编码。