我正在开发一个购物车,使用户能够将"产品"类型的商品添加到购物篮中。当最初添加项目时,它的类型为"产品",但是当另一个项目(第二个项目(添加到 Array(( 数组时,从那时起它的类型为"对象"。这在操作过程中可能不会产生太大区别,但是我宁愿保持类型一致。有人请指出我哪里出错了,非常感谢。
constructor(private _http: Http) {
localStorage.setItem("cart", JSON.stringify(new Array<Product>()));
}
GetCartProducts() {
let storage:string = localStorage.getItem("cart");
return <Array<Product>>((storage) ? JSON.parse(storage) : new Array<Product>());
}
AddProduct(product: Product) {
let items = <Array<Product>>this.GetCartProducts();
console.log(items);
items.push(<Product>product);
console.log(items);
localStorage.setItem("cart", JSON.stringify(<Array<Product>>items));
}
问题隐藏在您对JSON.parse
的使用中。此方法返回不附加任何类型信息的纯 javascript 对象。因此,如果要typed
对象,则必须手动恢复类型信息。
欲了解更多信息,请看这里
特别是在这里打字稿中的实现