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