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

时间:2019-05-10 21:57:46

标签: typescript

以下代码:

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

失败,出现以下错误:

  

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

为什么会这样?

1 个答案:

答案 0 :(得分:0)

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

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

export type Partial2DPoint = { x: number } | { y: number }
export type Partial3DPoint = Partial2DPoint & { z: number }

See this answer

  

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