我有一个设计问题,关于为从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"
}
}
从设计的角度来看,我可以通过几种方式定义接口:
IName
包含两个字符串属性:id
和name
,在以上示例中,它们可以应用于a
和c
。然后为d
定义另一个接口,该接口扩展了IName并为other
添加了一个属性。a
,c
和d
是不同的对象,因此具有三个单独的接口,因此将来可能具有其他不同的属性。缺点是三个接口将复制id
和name
属性。[index:string]:string
,并将其应用于a
,c
和d
。这样可以消除重复,但是我们可能会有多余的不需要的属性,而这些属性不会被编译器捕获。可能是一个简单/愚蠢的问题,但以为我会对此征询意见。