我有爲我的打字稿服務器API定義的接口,並且在通過MobX狀態樹定義模型時我希望確保打字稿編譯器強制模型快照符合這些接口。確保MobX狀態樹模型中的接口符合性
因此,如果一個附加屬性被添加到IFoo
接口,但未被添加到Foo
MST模型中,那麼在編譯時會有打字稿抱怨它。
執行上述操作的最佳方法是什麼?
我知道我可以從模型本身有效的打字稿接口:
type IFoo = typeof Foo.Type
我不想使用此接口爲我的服務器API,因爲:
在基本上處理快照(普通對象)的API接口中,不需要有像
IObservable
,IComplexType
等等。由此得出的接口也具有不希望的動作的方法簽名。
我曾試圖這樣的:
// 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;
但這似乎並沒有被工作正常。
是的,花了一些時間在打字稿上探索之後,我發現我不能只依靠MST來生成界面。我主要是在尋找一種方法來確保在寫完接口之後,我可以確保它們不會偏離我的模型定義。 – lorefnon
無論如何,謝謝你的回答以及MST上的所有驚人的工作。 – lorefnon