如何用打字稿接口描述mobx状态树模型?

时间:2018-10-16 05:30:16

标签: typescript mobx mobx-state-tree

我已经有一些接口了,我想用这个接口来描述模型,就像下面的代码一样。否则,我必须使用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;

1 个答案:

答案 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;