我缩短了我的模型和方法,但它代表了两种方式 我目前的问题。
型号:
export class OrdersModel {
constructor(public items: [{
itemName: string,
sellerUsername: string,
price: string,
image: string,
itemId: string,
cartId?: string
}]) {
}
}
方法:
checkOut() {
let orderItems = [];
for (let item of this.items) {
orderItems.push({
itemName: item[0].itemName,
sellerUsername: item[0].sellerUsername,
price: item[0].price,
image: item[0].image,
itemId: item[0].itemId
});
}
const order = new OrdersModel(
orderItems
);
this.userProfileService.addToOrders(order)
.subscribe(
data => {
console.log(data);
},
error => console.error(error)
);
}
我正在尝试向订单添加多个商品。所以我的方式 构造我的模型是有一个对象(项)数组,然后 将项目存储为数据库中的对象数组。所以我正在努力 循环遍历我当前的项目数组(要添加到项目中的项目) ()),并将它们添加到我的
Orders
模型。如果有一个更简单的方法 这样做,请告诉我。但这是我目前的想法 将项目数组(购物车项目)添加到订单模型中。这是 使用时我的orderItems
错误是方法中的参数 退房():
Argument of type any[] is not assignable to parameter of type `[{
itemName: string,
sellerUsername: string,
price: string,
image: string,
itemId: string,
cartId?: string
}]`
` Proper ‘0’ is missing in type any[]
我明白基本上我不能分配我拥有的数组类型,但我不确定如何修复它。
答案 0 :(得分:0)
问题是构造函数的参数不是数组,它实际上是元组,而元组的大小是固定的。通常:[type]
- 包含一个类型为type
,type[]
类型的数组的元组。您可以阅读有关元组here
constructor(public items: {
itemName: string,
sellerUsername: string,
price: string,
image: string,
itemId: string,
cartId?: string
}[]) {
}
注意我会改变您的设计以使用命名界面,以便您也可以正确键入orderItems
:
interface OrdersItemModel{
itemName: string,
sellerUsername: string,
price: string,
image: string,
itemId: string,
cartId?: string
}
export class OrdersModel {
constructor(public items: OrdersItemModel[]) {
}
}
function checkOut() {
let orderItems: OrdersItemModel[] = [];
for (let item of this.items) {
orderItems.push({
itemName: item[0].itemName,
sellerUsername: item[0].sellerUsername,
price: item[0].price,
image: item[0].image,
itemId: item[0].itemId
});
}
const order = new OrdersModel(
orderItems
);
}