将收到的数据从服务转发到正确的模型

时间:2016-01-27 14:42:36

标签: angularjs inheritance model typescript

您好我有以下型号:

export class Vehicle {
}

export class Trike extends Vehicle {
}

export class Car extends Vehicle {
}

这些是从API的模拟中检索

 var vehiclesResource = vehicleService.getResource();
        vehiclesResource.query((data) => {
            this.areas = data;

            var c = data[0] instanceof Car;
            var t = data[0] instanceof Trike;

            var cc = data[0].constructor === Car;
            var tt = data[0].constructor === Trike;
        });

从API检索汽车,现在当数据到达时我想将其投射到正确的对象(在这种情况下为Car)。但有些如何c =假t =假cc =假和tt =假。

在visualstudio中设置断点显示数据的类型为Object(Resource)

我在做错了什么?

1 个答案:

答案 0 :(得分:0)

最有可能的是,您通过反序列化来接收数据。在这种情况下,即使对象的结构相同,对象的类型也会丢失。例如,如果您执行以下操作:

let a = new Car();
let data = JSON.stringify();
let aa = JSON.parse(data);

'aa'对象的类型将是'Object'而不是'Car'。 如果可以接受,您可以将类定义转换为接口定义,并使用它:

let aa = <Car>JSON.parse(data);

或者您可以在此处实现自己的反序列化方法,更多信息:How do I initialize a typescript object with a JSON object