这些方面的东西:
interface A {
a: number;
x: any;
}
interface B extends A {
b: number;
}
interface C {
a: number;
b: number;
}
因此B
将等于C
(省略字段x
但仍延伸A
)。可能吗?如果是这样,怎么样?
答案 0 :(得分:2)
这是处理删除子接口成员的另一种方法:
interface Base {
a: number;
x?: any;
}
interface Child extends Base {
x?: undefined;
}
这样,字段x
根本不应该存在,或者如果存在,则必须将其设置为undefined
,这在大多数情况下都与不存在一样好(除非您尝试枚举班级成员或执行类似操作)。
答案 1 :(得分:1)
无法在TypeScript中删除接口的继承字段/方法。
但是你可以通过界面再造来克服这个问题:
提取基本界面
interface BaseA {
a: number;
}
interface A extends Base A {
x: any;
}
interface B extends A {
b: number;
}
interface C extends BaseA {
b: number;
}
C
和B
都可投放到BaseA
。
使用可选字段
interface A {
a: number;
x?: any;
}
interface B extends A {
b: number;
}
interface C extends A {
b: number;
}
我确信还有其他方法取决于某个任务上下文。