假设我有这个简单的界面:
interface IMyButton extends Partial<HTMLInputElement> {
color?: string
}
这使我可以使用在HTMLInputElement
中定义的属性来扩展基础IMyButton
(例如,对于Web组件)。
有没有办法只获取基本类型IMyButton
定义的属性,而不是包括HTMLInputElement
中的所有属性的所有属性?
因此,我需要一个仅具有color?: string
作为属性的新类型。
扩展接口随组件的不同而变化,即interface IMySelect extends Partial<HTMLSelectElement>
,因此我不能仅仅排除固定类型。
我为什么需要这样做的一些背景:我有一个使用IMyButton
的映射类型-因此,例如,使用API必须定义默认值。现在,此映射类型还包括HTMLInputElement
属性,这些属性完全是可选的,甚至不需要默认值。例如,Visual Studio Code当然仍然显示扩展类型的所有属性,因此创建此对象确实很困难,因为智能感知被基本的html属性所困扰...
答案 0 :(得分:1)
您已经弄清楚了(假设您可以重新定义界面)
所以我需要一个仅具有颜色的新类型?:字符串作为属性。
只需创建一个具有color
属性的接口,然后同时扩展两者:
interface IMyButtonProps {
color?: string
}
interface IMyButton extends IMyButtonProps, Partial<HTMLInputElement> {}