角度/打字稿序列化数据

时间:2019-01-24 01:33:09

标签: angular typescript

在我的角度应用程序中,我需要将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使用正确的函数吗?

0 个答案:

没有答案