Метод .filter в массиве mobx.values ​​выдает ошибку машинописного текста "Объект возможно 'неопределен'" - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю магазин с mobx-state-tree.

. Mobx поставляется с объектом api , который имеет функцию values для возврата всех значений в наблюдаемой коллекции в виде массива. .

Согласно комментарию к выпуску github , чтобы получить массив javascript из наблюдаемой mobx, вы можете либо использовать Array.from(), либо использовать values() из интерфейса mobx api.

Typescript не жалуется при использовании метода .filter на результат из Array.from() и фактически получает правильную информацию о типе элементов в массиве.

Однако он жалуется при использовании .filter на результат из функции mobx api values().

Например,

Array.from(self.tasks.values()).filter((task) => task.done);

работает нормально. Но

values(self.tasks).filter((task) => task.done);

выдает следующие 2 ошибки TS на task.done части:

  1. task: объект, возможно, 'неопределен'.
  2. done: свойство 'done' не существует для типа 'number | [любой] | (() => IterableIterator <{title: string; done: boolean; assignee: ({id: string; name: string;} & NonEmptyObject & IStateTreeNode; name: IOptionalIType <...>;}, {}, _NotCustomized, _NotCustomized >>>>) | undefined;} & NonEmptyObject & {...... '. Свойство' done 'не существует для типа' number '.

Кто-нибудь еще сталкивался с похожая проблема?

Мне кажется, что тип параметра для метода фильтра: () => IterableIterator<> вызывает здесь проблему, но я не могу найти никакого решения, чтобы он прошел через TS C.

...