Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays localstorage最初返回分配的类型,然后返回类型对象_Arrays_Typescript_Types_Local Storage_Cart - Fatal编程技术网

Arrays localstorage最初返回分配的类型,然后返回类型对象

Arrays localstorage最初返回分配的类型,然后返回类型对象,arrays,typescript,types,local-storage,cart,Arrays,Typescript,Types,Local Storage,Cart,我正在开发一个购物车,使用户可以将产品类型的物品添加到购物篮中。当一个项目最初被添加时,它是Product类型的,但是当另一个itemsecond项目被添加到数组中时,从那时起它是Object类型的。在操作过程中,这可能不会有太大的区别,但是我宁愿保持类型的一致性。请有人指出我哪里出了问题,非常感谢 constructor(private _http: Http) { localStorage.setItem("cart", JSON.stringify(new

我正在开发一个购物车,使用户可以将产品类型的物品添加到购物篮中。当一个项目最初被添加时,它是Product类型的,但是当另一个itemsecond项目被添加到数组中时,从那时起它是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));

      }

问题隐藏在JSON.parse的使用中。此方法返回纯javascript对象,不附加任何类型信息。因此,如果要键入对象,必须手动恢复类型信息

有关更多信息,请查看

特别是在typescript中的实现