Typescript 如何定义hateoas链接的类型?
让我们看看下面的Rest响应Typescript 如何定义hateoas链接的类型?,typescript,typescript2.0,Typescript,Typescript2.0,让我们看看下面的Rest响应 { id: 123, name : "test", addressId : 4 _links : { self : { href : "xyz", method : "GET" }, address : { href : "xyz/address/4", met
{
id: 123,
name : "test",
addressId : 4
_links : {
self : {
href : "xyz",
method : "GET"
},
address : {
href : "xyz/address/4",
method : "GET"
}
}
}
这里有没有定义“\u links”
的类型?我能想象的是我能定义一些东西
interface HateoasUrl {
href : string;
method : string;
}
interface HateoasKeyValuePair{
[key: string] : HateoasUrl;
}
但不知何故,它似乎并不正确,因为在
\u链接中有多个键值。但这种类型表示只能有一个键值。那么,如何为一个可以有多个属性的对象定义类型呢 我不完全确定这是否是您想要的,但我将此问题解释为:“如何使用typescript对HAL文档建模?”。我假设HAL,因为您使用\u links
属性,即使HAL没有在链接上指定方法
属性
我会这样做:
interface HalLink {
href: string;
type: string;
}
interface HalLinks {
[s: string]: HalLink | HalLink[];
}
这里我们有一个单链接接口,另一个类型表示\u links
对象。\u links
对象中的每个项目都可以是单个HAL链接,也可以是HAL链接数组。为什么要使用接口
而不是类
?@Stephane这个问题对于只搜索stackoverflow很有意义。它一定被回答了好几次。