Reputation: 59
I am trying to implement this function but I keep getting this undefined error.
let item: OrderItem | undefined;
item = this.order.items.find(o => o.productNumber === product.productNumber);
if (item !== undefined) {
item.quantity++;//Error
} else {//Something}
The error happens near the item.quantity++; These are the things I tried
if (!item) {
item.quantity++;
if (item) {
item.quantity++;
any help is appreciated.
Order.ts
export class OrderItem {
Id: number | undefined;
productId: number | undefined;
productNumber: number | undefined;
productName: string | undefined;
productPicture: string | undefined;
productPrice: number | undefined;
productDescription: string | undefined;
quantity: number | undefined;
unitPrice: number | undefined;
}
export class Order {
orderId: number | undefined;
orderNumber: string | undefined;
orderDate: Date = new Date();
orderTotal: number | undefined;
/*orderStatus: string | undefined;*/
items: OrderItem[] = [];
}
Upvotes: 0
Views: 277
Reputation: 9018
Since quantity
is typed as number | undefined
item.quantity
may be undefined
. Trying to increment this with item.quantity++
would result in NaN
and therefor not be what you expected here.
To satisfy the type checker here trying checking that item.quantity
is not undefined
:
if (item?.quantity !== undefined) {
item.quantity++;
}
(Note the use of optional chaining here)
Upvotes: 1