свойство ‘findIndex’ для неопределенного

#.net #angular #web-applications

#.net #угловой #веб-приложения

Вопрос:

Здравствуйте, у меня проблема в этом фрагменте кода:

 private addOrUpdateItemInCompare(items: ICompareItem[], itemToAdd: ICompareItem, quantity: number): ICompareItem[] {
    const index = items.findIndex(i => i.id === itemToAdd.id);
    if(index === -1){
      itemToAdd.quantity = quantity;
      items.push(itemToAdd);

    }
    else{
      items[index].quantity  = quantity;
    }

    return items;
}
  

Когда я пытаюсь использовать этот метод, я получаю сообщение об ошибке

«Не удается прочитать свойство ‘findIndex’ неопределенного типа»

Я понятия не имею, в чем проблема, потому что в методе, подобном 1-му:

 private addOrUpdateItemInBasket(items: IBasketItem[], itemToAdd: IBasketItem, quantity: number): IBasketItem[] {
    const index = items.findIndex(i => i.id === itemToAdd.id);
    if(index === -1){
      itemToAdd.quantity = quantity;
      items.push(itemToAdd);

    }
    else{
      items[index].quantity  = quantity;
    }

    return items;
} 
  

Все работает.

Спасибо за все ответы.

Комментарии:

1. Можете ли вы показать нам фрагмент, в котором вызывается функция addOrUpdateItemInCompare ?

Ответ №1:

Ваше items значение массива имеет либо undefined , либо null . Пожалуйста, убедитесь, что ваш items имеет значение.

Комментарии:

1. я проверяю это, и да, элементы-IComareItems не определены, но когда я проверяю это, это должен быть интерфейс экспорта ICompare { id: строка; элементы: ICompareItem[]; clientSecret?: строка; } интерфейс экспорта ICompareItem { id: номер; ProductName: строка; цена: номер; pictureUrl: строка; марка: строка; тип: строка; запас: номер; цвет: строка; материал: строка; размеры: строка; количество: номер; } класс экспорта Compare реализует ICompare { id = uuidv4(); элементы: ICompareItem[]; }

2. если возможно, можете ли вы воспроизвести это в stackblitz.com ?

3. Это большая работа, но я могу поделиться этим кодом с вами на GitHub