TypeScript类型转换问题 - 示例

时间:2017-03-30 09:46:20

标签: typescript interface casting

我在TypeScript中遇到了“类型转换界面”。我不明白为什么我的界面没有干扰!请参阅下面的示例:

interface IProduct {
    age  : number;
    price : number;
}

class Product{
    public age: number = 22;
}

let products : Array<Product> = [new Product(), new Product()];
let products_stringify = JSON.stringify(products);
let products_parsed = JSON.parse(products_stringify);

**// Now my problem starts here....**

// Why interface IProduct does not interfere ?
let firstProduct1: IProduct = products_parsed[0];
console.dir(typeof products_parsed[0]);// -> object

// When i do a typecasting with <object> the interface interferes, and throws an error!
let firstProduct2 : IProduct = <object>products_parsed[0];
console.dir(typeof products_parsed[0]);// -> object

1 个答案:

答案 0 :(得分:0)

对products数组进行字符串化并再次解析它会丢失之前的任何类型信息。这就是为什么它不会像你期望的那样被回读的原因。

JSON.parse的返回类型是任何

对象类型的对象无法分配,因为它缺少在该界面上定义的2个属性,因此无法分配给IProduct。 对象是一个空对象{}。