我们正在使用打字稿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
}
答案 0 :(得分:2)
您无法扩展并集,但是可以使用交集添加属性:
export type DropdownOptionExt = DropdownOption & {
payload: any
name: string
}
这等效于:
export type DropdownOptionExt =
| (ValueDropdownOption & { payload: any; name: string; })
| (TemplateDropdownOption & { payload: any; name: string; })