在Typescript中将JSON转换为接口类型

时间:2018-10-18 10:56:06

标签: json typescript typescript-typings

我正在尝试将JSON转换为Typescript中的Interface Type。这是我指的JSON

{
  Person: {
     createPerson: async () => true,
     updatePerson: async () => true
  }
}

现在,我想出了自己的界面。我想知道我是否做对了。

interface Persons {
   Person: {
      createPerson: Promise<boolean>,
      updatePerson: Promise<boolean>
   }
}

2 个答案:

答案 0 :(得分:0)

您的代码在技术上正确无误,但绝对有改进的余地。

1)首先,您应该为较小的实体创建一个接口。这是Person

interface Person {

}

2)现在,关于Person的成员,他们在您的代码中很奇怪。请记住,Person接口描述了个人实体的实例。换句话说,界面应描述现有或创建的人员。因此,createPerson成员意义不大。但是updatePerson可以,但是由于我们已经知道人员上下文,因此无需将“人员”部分保留在那里。因此应该只是update

interface Person {
  update: () => Promise<boolean>
}

3)现在关于Persons。不需要这样的接口。而且,您不能有一个代表其他接口数组的接口。但是,您可以根据需要创建类型别名

type Persons = Person[]

但是在大​​多数情况下,最好只使用Person[],因为它的抽象程度要低一些。

答案 1 :(得分:0)

您可以使用as关键字:

interface Persons {
    Person: {
        createPerson: Promise<boolean>,
        updatePerson: Promise<boolean>
    };
}

let person = {
    'Person': {
        createPerson: Promise.resolve(true),
        updatePerson: Promise.resolve(true)
    }
} as Persons; // <-- example of using as