The following code:
export type Partial2DPoint = { x: number } | { y: number } export interface Partial3DPoint extends Partial2DPoint { z: number }
Fails with the following error:
An interface can only extend an object type or intersection of object types with statically known members.
Why is this happening?
(I'm answering my own question) This is because you cannot extend a union type using an interface. You must use type alias:
export type Partial2DPoint = { x: number } | { y: number } export type Partial3DPoint = Partial2DPoint & { z: number }
See this answer:
A class can implement an interface or type alias, both in the same exact way. Note however that a class and interface are considered static blueprints. Therefore, they can not implement / extend a type alias that names a union type.
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