您好我有以下型号:
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)
我在做错了什么?答案 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