rrrrTTTyyy
rrrrTTTyyy

Reputation: 59

Object is possible undefined? Typescript Angular

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

Answers (1)

acran
acran

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

Related Questions