目前,我正在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 }
我想更优雅地使用它,并使用任何映射库或工具。尽管如此,还是有任何最佳实践。
答案 0 :(得分:2)
对我们有用的最佳解决方案是使用Typescript装饰器为DTO类建模并自己定义映射规则。 以下是可以为您提供指导的内容:
你基本上需要注释类和属性,以使大多数场景工作没有太多麻烦。但对于高级类型,它可能需要自定义序列化器和反序列化器。它并不难,但需要一些编码。