一个接口只能扩展一个类或另一个接口

时间:2019-06-12 20:15:18

标签: angular typescript

我们正在使用打字稿2.9.2

我无法扩展此接口 DropDownOption 。收到错误消息“错误TS2312:一个接口只能扩展一个类或另一个接口。”

是否有另一种编写此方法的方法,它可以避免使用类型,因此它是纯接口并且可以扩展?

export interface BaseDropdownOption {
  id: string;
}
export interface ValueDropdownOption extends BaseDropdownOption {
  value: string;
  template?: never;
}
export interface TemplateDropdownOption extends BaseDropdownOption {
  template: TemplateRef<any>;
  value?: never;
}
export type DropdownOption = ValueDropdownOption | TemplateDropdownOption;

因此,例如,此代码会产生以上错误:

export interface DropdownOptionWithPayload extends DropdownOption {
  payload: any
  name: string
}

1 个答案:

答案 0 :(得分:2)

您无法扩展并集,但是可以使用交集添加属性:

export type DropdownOptionExt = DropdownOption & {
  payload: any
  name: string
}

这等效于:

export type DropdownOptionExt = 
     | (ValueDropdownOption & { payload: any; name: string; }) 
     | (TemplateDropdownOption & { payload: any; name: string; })