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

时间:2017-05-15 22:03:32

标签: arrays typescript types local-storage cart

我正在开发一个购物车,使用户可以添加类型"产品"到篮子里。最初添加项时,它的类型为" Product"但是当另一项(第二项)添加到Array()数组时,它的类型为" Object"从那时起。这在操作过程中可能没有太大区别,但我宁愿保持类型一致。有人请指出哪里出错了,非常感谢。

     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));

      }

1 个答案:

答案 0 :(得分:1)

问题隐藏在您对JSON.parse的使用中。此方法返回普通的javascript对象,不附加任何类型信息。因此,如果您想拥有对象typed,则必须手动恢复类型信息。

有关详细信息,请查看here

具体在打字稿here

中实现