Typescript 如何定义hateoas链接的类型?

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

让我们看看下面的Rest响应

{
   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很有意义。它一定被回答了好几次。