Something along these lines:
interface A {
a: number;
x: any;
}
interface B extends A {
b: number;
}
interface C {
a: number;
b: number;
}
So the B would be equal to C (omitting field x but still extending A). Is it possible? If so, how?
It is impossible to remove an inherited field/method of an interface in TypeScript.
But you can overcome this via interfaces reengineering:
Extract base interface
interface BaseA {
a: number;
}
interface A extends Base A {
x: any;
}
interface B extends A {
b: number;
}
interface C extends BaseA {
b: number;
}
Both C and B will be castable to BaseA.
Use optional field
interface A {
a: number;
x?: any;
}
interface B extends A {
b: number;
}
interface C extends A {
b: number;
}
I'm sure there are other ways depending on the certain task context.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With