在我的角度应用程序中,我需要将json / raw数据转换为打字稿对象。数据是原始属性和相关对象的组合,也需要对其进行转换。
例如json /原始数据
{
id: 1,
name: 'John Smith',
email: 'jsmith@test.com'
status: {
id: 100,
name: 'Active'
}
}
例如调用api并将数据映射到对象
public getList(): Observable<{ data: T[], meta?: any }> {
return this.httpClient.get(`${environment.api_url}/items`)
.pipe(
map((response: any) => { return {...response, data: response.data.map(item => new Item(item))};
}));
}
和我的Item类的构造函数中。
constructor(props: any = {}) {
Object.assign(this, props);
this.status = props.status ? new Status(props.status) : undefined;
}
我的所有类属性也都经过强类型输入,例如
public id: number;
public name: string;
public email: string;
public status: Status
这一切似乎都很好,我唯一的问题与我对Object.assign(this, props);
的使用有关,我这样做的方式是否有潜在的问题?其主要目的是使我不必将每个属性分配都写入构造函数中,例如this.name = props.name
。是Object.assign使用正确的函数吗?