Прямая или косвенная ссылка в TypeScript 3.5 - PullRequest
1 голос
/ 26 июня 2019

Мы используем библиотеку mobx-state-tree, которая включает в себя довольно сложные объявления TypeScript, которые мне сложно расшифровать.

В любом случае, кажется, что произошло некоторое изменение между TS 3.4 и 3.5, которое вызвало странную проблему.

enter image description here

Я подготовил минимальное воспроизведение в хранилище: https://github.com/FredyC/mobx-state-tree-ts3.5

Я знаю, что это, вероятно, очень специфическая проблема, требующая глубокого погружения. Был бы признателен, по крайней мере, в правильном направлении, какие изменения в TS 3.5 могут вызывать подобные проблемы.

Обновление

На основании ответа https://stackoverflow.com/a/56781615/902813 Я подправил пример в репо и получил похожую ошибку. Похоже, что mobx-state-tree может злоупотреблять некоторой ошибкой в ​​TS, которая была исправлена ​​в 3.5, а теперь она ломает вещи.

enter image description here

1 Ответ

1 голос
/ 27 июня 2019

Я не могу быть уверенным, что является глубокой причиной вашей проблемы, просто просматривая ваш код, но в вашем минимальном примере TS жалуется на метод get root() в BaseModel.ts, ссылающийся на себя в возвращаемом значении (как где, может потребоваться некоторое время, чтобы найти, так как mobx-state-tree довольно большой), поэтому вам нужно добавить к нему тип, написав get root(): TRootModel, и тогда ваш проект будет прекрасно компилироваться.

...