序列化包含不同类型的数组

时间:2017-03-15 15:39:42

标签: javascript json inheritance typescript instanceof

我在打字稿中有一个数组,如下所示: const baseElements: IBaseElement[]

IBaseElement包含一些stuf:

export interface IBaseElement{
a: number;
b: string;
}

两个类实现IBaseElement

export class A implements IBaseElement{
}

export class B implements IBaseElement{
}

A数组(B

中使用了baseElementsbaseElements.push(A)....

执行此操作时,我始终可以使用instanceof来确定我正在处理的元素是A还是B,但是在某些时候这将被序列化为JSON并保存在数据库中。

所以我的问题是这样的:当我从数据库中获取数据时,是否可以区分这两种类型?

如果我的问题不够详细,请告诉我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

在某些时候,如果您需要创建2个新类,那么JSON模式将偏离初始接口。

基本上这意味着当你要从数据库中检索一些JSON时,你需要明确地转换它。例如,如果您使用的是Angular + RxJS,则应以以下

结束
return http.get(this.url)
           .map(response => response.json().data as A)

angular tutorial

所示