localstorage 最初返回分配的类型,然后键入 Object



我正在开发一个购物车,使用户能够将"产品"类型的商品添加到购物篮中。当最初添加项目时,它的类型为"产品",但是当另一个项目(第二个项目(添加到 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对象,则必须手动恢复类型信息。

欲了解更多信息,请看这里

特别是在这里打字稿中的实现

相关内容

最新更新