错误消息:“接口只能扩展对象类型或对象类型与静态已知成员的交集”

chi*_*ode 35 typescript

以下代码:

export type Partial2DPoint = { x: number } | { y: number }
export interface Partial3DPoint extends Partial2DPoint {
  z: number
}
Run Code Online (Sandbox Code Playgroud)

失败并出现以下错误:

接口只能扩展对象类型或对象类型与静态已知成员的交集。

为什么会这样?

chi*_*ode 49

类型与接口在扩展联合类型的能力上有所不同

(我正在回答我自己的问题)这是因为您不能使用接口扩展联合类型。您必须使用类型别名:

export type Partial2DPoint = { x: number } | { y: number }
export type Partial3DPoint = Partial2DPoint & { z: number }
Run Code Online (Sandbox Code Playgroud)

看到这个答案

类可以以完全相同的方式实现接口或类型别名。但是请注意,类和接口被视为静态蓝图。因此,它们不能实现/扩展命名联合类型的类型别名。

  • 对于那些难以发现不同之处的人,他将“interface ...extends”更改为“type...=...&” (14认同)