我在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
答案 0 :(得分:0)
对products数组进行字符串化并再次解析它会丢失之前的任何类型信息。这就是为什么它不会像你期望的那样被回读的原因。
JSON.parse的返回类型是任何。
对象类型的对象无法分配,因为它缺少在该界面上定义的2个属性,因此无法分配给IProduct。 对象是一个空对象{}。