避免在打字稿中

时间:2019-05-15 22:30:09

标签: typescript types

我有一个设计问题,关于为从API从JSON反序列化的对象定义一些接口/类型的最简洁方法。

例如,如果我有一些API在下面返回一个JSON对象,而a,c和d是不同的类型,但是共享相同的属性名称。

{
  a: {
    id: "value",
    name: "value"
  },
  b: "sample",
  c: {
   id: "value",
   name: "value"
  },
  d: {
   id: "value",
   name: "value",
   other: "value"
  }
}

从设计的角度来看,我可以通过几种方式定义接口:

  1. 只需定义一个接口,例如IName包含两个字符串属性:idname,在以上示例中,它们可以应用于ac。然后为d定义另一个接口,该接口扩展了IName并为other添加了一个属性。
  2. 由于acd是不同的对象,因此具有三个单独的接口,因此将来可能具有其他不同的属性。缺点是三个接口将复制idname属性。
  3. 定义具有索引属性的接口,例如[index:string]:string,并将其应用于acd。这样可以消除重复,但是我们可能会有多余的不需要的属性,而这些属性不会被编译器捕获。

可能是一个简单/愚蠢的问题,但以为我会对此征询意见。

0 个答案:

没有答案