转换JSON来在打字原稿接口类型

问题描述 投票:1回答:2

我想一个JSON转换为接口类型的打字稿。这里是我这里指的是JSON

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

现在,我想到了我自己的接口。我想知道如果我做正确。

interface Persons {
   Person: {
      createPerson: Promise<boolean>,
      updatePerson: Promise<boolean>
   }
}
json typescript typescript-typings
2个回答
0
投票

你的代码,而技术上是正确的,肯定有改进的余地。

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

interface Person {

}

2)现在,关于Person的成员,他们是在你的代码怪异。请记住,在Person接口描述人实体的实例。换句话说,接口应该描述现有的或创建人。因此,createPerson会员制没有太大意义。然而updatePerson是有点好,但也没有必要保持“人”的部分有,因为我们知道这个人的背景了。因此,它应该只是update

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

3)现在就Persons。有没有必要有这样的接口。此外,你不能有较其他接口数组的接口。但是,您可以创建一个类型别名,如果你想:

type Persons = Person[]

然而,大多数的使用时间只是Person[]是最好的,因为它是少了几分抽象。


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
© www.soinside.com 2019 - 2024. All rights reserved.