让我们采取以下休息回应,
{
id: 123,
name : "test",
addressId : 4
_links : {
self : {
href : "xyz",
method : "GET"
},
address : {
href : "xyz/address/4",
method : "GET"
}
}
}
无论如何在这里定义"_links"
的类型?我能想象的是我可以定义类似的东西,
interface HateoasUrl {
href : string;
method : string;
}
interface HateoasKeyValuePair{
[key: string] : HateoasUrl;
}
但不知怎的,它似乎并不正确,因为_links
中会有多个键值。但是这种类型表示只能有一个关键值。那么如何为一个可以有多个属性的对象定义类型呢?
答案 0 :(得分:1)
我不完全确定这是否是您想要的,但我将此问题解释为:“我如何使用打字稿来模拟HAL文档?”。我假设是HAL,因为你使用_links
属性,即使HAL没有在链接上指定method
属性。
我这样做有点像这样:
interface HalLink {
href: string;
type: string;
}
interface HalLinks {
[s: string]: HalLink | HalLink[];
}
这里我们有一个链接接口,另一个类型代表_links
对象。 _links
对象中的每个项目可以是单个HAL链接,也可以是HAL链接数组。