我已经有一些接口了,我想用这个接口来描述模型,就像下面的代码一样。否则,我必须使用types
中的mobx-state-tree
重新写。但这不是正确的方法,有效的解决方案是什么?
import { types } from 'mobx-state-tree';
export interface IPeople {
name: string;
age: number;
}
const Peoples = types
.model({
name: 'peoples',
nancy: IPeople, // error at this line
})
export default Peoples;
答案 0 :(得分:11)
从TypeScript类型声明到mobx-state-tree
模型定义是不可能的(除了可能通过元数据反射,尽管我怀疑有人实现了它)。但是,如果编写mobx-state-tree
模型定义,则可以从中生成TypeScript类型。请参阅自述文件中的Using a MST type at design time。因此,您将不得不转换现有的接口,但是至少不必保留相同信息的两个副本。
import { types, Instance } from 'mobx-state-tree';
const Person = types.model({
name: types.string,
age: types.number
});
export type IPeople = Instance<typeof Person>;
const Peoples = types
.model({
name: 'peoples',
nancy: Person
})
export default Peoples;