【问题标题】:Direct or indirect reference in TypeScript 3.5TypeScript 3.5 中的直接或间接引用
【发布时间】:2019-06-26 20:52:21
【问题描述】:

我们正在使用一个库 mobx-state-tree,其中包含相当复杂的 TypeScript 声明,我很难理解。

不管怎样,TS 3.4 和 3.5 之间似乎发生了一些变化,导致了一个奇怪的问题。

我已经在存储库中准备了一个最小的复制品:https://github.com/FredyC/mobx-state-tree-ts3.5

我知道这可能是一个非常具体的问题,需要深入研究。至少会欣赏正确的方向,TS 3.5 中的哪些变化可能会导致这样的问题。

更新

根据https://stackoverflow.com/a/56781615/902813 的答案,我调整了回购中的示例并得到了类似的错误。看起来 mobx-state-tree 可能滥用了 TS 中的一些错误,这些错误在 3.5 中得到了修复,现在它破坏了一些东西。

【问题讨论】:

    标签: typescript mobx-state-tree


    【解决方案1】:

    仅通过快速查看您的代码,我无法确定问题的深层原因是什么,但在您的最小示例中,TS 抱怨 BaseModel.ts 中的 get root() 方法在其返回值中引用了自己(如对于哪里,可能需要一段时间才能找到,因为mobx-state-tree很大),所以你需要通过写get root(): TRootModel给它添加一个类型,然后你的项目就可以编译好了。

    【讨论】:

    • 非常感谢,这肯定以正确的方式提供了帮助。不幸的是,似乎发生了一些奇怪的事情。我已经稍微扩展了示例以更接近实际的实现,并且现在在不同的地方得到了类似的错误。如果我明确设置返回类型,它确实有效,但考虑到它是用 TS 3.4 正确输入的,这几乎不是一个解决方案。所以我想知道是否需要在 mobx-state-tree 代码中进行一些更改,或者为什么会发生这种情况。
    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 2021-08-12
    • 2012-09-24
    • 2020-10-03
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多