我想一个JSON
转换为接口类型的打字稿。这里是我这里指的是JSON
:
{
Person: {
createPerson: async () => true,
updatePerson: async () => true
}
}
现在,我想到了我自己的接口。我想知道如果我做正确。
interface Persons {
Person: {
createPerson: Promise<boolean>,
updatePerson: Promise<boolean>
}
}
你的代码,而技术上是正确的,肯定有改进的余地。
1)首先,你应该创建一个较小的实体的接口。这是Person
:
interface Person {
}
2)现在,关于Person
的成员,他们是在你的代码怪异。请记住,在Person
接口描述人实体的实例。换句话说,接口应该描述现有的或创建人。因此,createPerson
会员制没有太大意义。然而updatePerson
是有点好,但也没有必要保持“人”的部分有,因为我们知道这个人的背景了。因此,它应该只是update
:
interface Person {
update: () => Promise<boolean>
}
3)现在就Persons
。有没有必要有这样的接口。此外,你不能有较其他接口数组的接口。但是,您可以创建一个类型别名,如果你想:
type Persons = Person[]
然而,大多数的使用时间只是Person[]
是最好的,因为它是少了几分抽象。
您可以使用关键字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