Error Message: “An interface can only extend an object type or intersection of object types with statically known members”

后端 未结 1 394
野性不改
野性不改 2021-02-07 00:05

The following code:

export type Partial2DPoint = { x: number } | { y: number }
export interface Partial3DPoint extends Par         


        
1条回答
  •  闹比i
    闹比i (楼主)
    2021-02-07 00:42

    Types vs Interfaces differ in the ability to extend union types

    (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.

    0 讨论(0)
提交回复
热议问题