WedX - журнал о программировании и компьютерных науках

Typescript: как указать тип возвращаемого значения для метода Array.filter()

Я новичок в TypeScript, и после JavaScript он выходит, но иногда с ним трудно работать.

У меня есть метод:

// Part of Vuex store code
state = ...

readOneAsr: (asrId: number): IAsr | undefined => {
   const filteredInstances = state.items.filter((asr) => asr.id === asrId)
   if (filteredInstances.length > 0) {
      return { ...filteredInstances[0] }
   }
}

// Method from Vue component
...
get relatedAsr(): IAsr[] {
   if (!this.instance) {
      return []
   }

   return this.asr_ids
      .map((aid) => readOneAsr(aid))
      .filter((asr) => asr !== undefined)
}

Метод readOneAsr может возвращать undefined, но в конце метод relatedAsr возвращает только IAsr экземпляров.

Поэтому я указал relatedAsr(): IAsr[]. Но eslint показывает мне ошибку:

 83:5 Type '(IAsr | undefined)[]' is not assignable to type 'IAsr[]'.
      Type 'IAsr | undefined' is not assignable to type 'IAsr'.
      Type 'undefined' is not assignable to type 'IAsr'.

Как исправить эту ошибку? Самый простой способ - просто указать тип возврата для (IAsr | undefined)[], но мне это решение не нравится.


  • Не могли бы вы поделиться минимальным воспроизводимым кодом? 03.12.2020
  • Сделайте возвращаемый тип обратного вызова фильтра type предикат. 03.12.2020

Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]