Я создаю магазин с 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
части:
task
: объект, возможно, 'неопределен'. 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.