Javascript 如何使用接口在Typescript中的方法中添加数据?
我正在做一个购物车测验,当点击add按钮时,产品详细信息会通过event emitter从孩子传递到家长,并传递到组件,但我不知道如何将其添加到购物车?它在下面的addproduct方法中显示错误,因为产品和购物车接口中的属性不匹配 addproduct(product:product){this.cart.items.push(product)} 抛出错误:(参数)产品:产品 “Product”类型的参数不能分配给“CartItem”类型的参数。 类型“Product”缺少类型“CartItem”中的以下属性:item,quantityts(2345) app.component.htmlJavascript 如何使用接口在Typescript中的方法中添加数据?,javascript,angular,typescript,Javascript,Angular,Typescript,我正在做一个购物车测验,当点击add按钮时,产品详细信息会通过event emitter从孩子传递到家长,并传递到组件,但我不知道如何将其添加到购物车?它在下面的addproduct方法中显示错误,因为产品和购物车接口中的属性不匹配 addproduct(product:product){this.cart.items.push(product)} 抛出错误:(参数)产品:产品 “Product”类型的参数不能分配给“CartItem”类型的参数。 类型“Product”缺少类型“CartIte
<app-product-list [products]="products"
(onAddToCart)="addToCart($event)"
(onQuantityUpdate)="updateCart($event)"
class="flex-70"></app-product-list>
<app-cart class="flex-30" [cart]="cart"></app-cart>
您好,错误是因为您试图将product类型的产品分配给Cart类型。两者都有不同的钥匙在里面,都是强制性的。乍一看,您可以像这样重构它,它应该可以工作
addToCart({id, name, cartQuantity}: Product) {
let cart: CartItem = {
id,
item: name,
quantity: cartQuantity
};
this.cart.items.push(cart);
console.log(this.cart)
}
它不允许我在addProduct方法中使用new关键字创建实例。您导入了CartItem接口吗?是的,我导入了CartItem接口,它说“CartItem”仅指类型,但在此处用作值。“编辑了上面的答案,现在应该可以了:)
export class CartComponent implements OnInit{
@Input() cart: Cart;
constructor() {}
addToCart({id, name, cartQuantity}: Product) {
let cart: CartItem = {
id,
item: name,
quantity: cartQuantity
};
this.cart.items.push(cart);
console.log(this.cart)
}