我正在阅读一些代码,重复模式之一如下:
export interface IA {
readonly IB: IB
}
export interface IB extends IA {
name: string;
dislayName: string;
}
具有一个具有单个只读接口属性的接口,然后使另一个接口扩展它的优点是什么?这是常见的设计模式吗?另外,还有一个循环类型引用。为什么不抛出错误?
答案 0 :(得分:0)
您可以在提供信息的地方建模,例如关于父级层次结构。
const bla: IA = {
name: '1st level',
displayName: '1st',
IB: {
name: '2nd level',
displayName: '2nd',
IB: {
name: '3rd level',
displayName: '3rd',
IB: {
...
}
}
}
}
但是这不符合打字稿,因为始终需要定义IB(直到无穷大)-因此,除非您告诉打字稿忽略它,否则您无法自己定义它。我怀疑这是服务器发出某种响应的类型,但未知该结构的深度。
我猜正确的界面应该是(如果我的理解正确的话)
export interface IB extends Partial<IA> {
name: string;
dislayName: string;
}
这将允许信息的深层嵌套