gpt4 book ai didi

mobx - 确保 MobX 状态树模型中的接口(interface)合规性

转载 作者:行者123 更新时间:2023-12-05 00:49:47 27 4
gpt4 key购买 nike

我为我的 typescript 服务器 API 定义了接口(interface),当通过 MobX 状态树定义模型时,我想确保 typescript 编译器强制模型快照符合这些接口(interface)。

所以如果一个额外的属性被添加到 IFoo接口(interface),但未添加到 Foo MST 模型,最好让 typescript 在编译时提示它。

执行上述操作的最佳方法是什么?

我知道我可以从模型本身获得有效的 typescript 接口(interface):

type IFoo = typeof Foo.Type

我不想将此接口(interface)用于我的服务器 API,因为:
  • 不希望有像 IObservable 这样的东西。 , IComplexType等在本质上处理快照(普通对象)的 API 接口(interface)中。
  • 因此,派生的接口(interface)也具有用于不需要的操作的方法签名。


  • 我曾尝试过类似的事情:
    // IFoo is my server interface
    const T = t.model("Foo", {...})

    type IT = typeof T.Type;

    type ISnapshot<T> = {[K in keyof T]?: T[K];}
    export const Foo : IModelType<ISnapshot<IFoo>, IT> = T;

    但这似乎没有按预期工作。

    最佳答案

    正确的答案是使用 .SnapshotType不幸的是,由于 TypeScript 中缺少条件类型,我们无法准确地提供这一点。

    到那时你需要手动定义你的接口(interface):(

    这是您可以跟踪进度的问题:)

    https://github.com/mobxjs/mobx-state-tree/issues/117

    关于mobx - 确保 MobX 状态树模型中的接口(interface)合规性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868438/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com