Typescript 在扩展某些接口后强制执行作为数组的属性类型
给定一个枚举:Typescript 在扩展某些接口后强制执行作为数组的属性类型,typescript,Typescript,给定一个枚举: enum操作{ 增加亮度='增加亮度', 降低亮度='降低亮度', TOGGLE='TOGGLE' } 以及两个接口可调和可切换,它们都具有tuple类型的属性操作: 接口可调光{ 明亮度:数字; 最大亮度:数字; 动作:[动作.增加亮度,动作.降低亮度] } 接口可切换{ 操作:[actions.TOGGLE] } 我希望有一个扩展可调和可切换的接口MyDevice: 接口MyDevice扩展了可调光、可切换{} 由于接口可切换和可调中的操作的类型不同,我得到了错误: 接
enum操作{
增加亮度='增加亮度',
降低亮度='降低亮度',
TOGGLE='TOGGLE'
}
以及两个接口可调
和可切换
,它们都具有tuple类型的属性操作
:
接口可调光{
明亮度:数字;
最大亮度:数字;
动作:[动作.增加亮度,动作.降低亮度]
}
接口可切换{
操作:[actions.TOGGLE]
}
我希望有一个扩展可调
和可切换
的接口MyDevice
:
接口MyDevice扩展了可调光、可切换{}
由于接口可切换
和可调
中的操作
的类型不同,我得到了错误:
接口“MyDevice”不能同时扩展类型“Dimmable”和“Toggable”。
“Dimmable”和“Toggable”类型的命名属性“actions”不相同。
因此,在扩展操作时,我在可调
和可调
中选择了操作
,错误消失了:
接口MyDevice扩展了Omit,Omit{};
但我真正想要的是在MyDevice
中设置属性actions
,其中的类型如下所示:
接口MyDevice扩展忽略,忽略{
行动:[//有一些难看的解决方法,不确定你是否想达到那里..强迫TypeScript连接元组类型通常令人不快。你真的关心接口中元素的顺序和数量吗?数组对你来说足够好吗?@jcalz我不关心顺序,但数量对meRelated来说很重要你有一些难看的解决方法,不确定你是否想达到目的..强迫TypeScript连接元组类型通常令人不快。你真的关心接口中元素的顺序和数量吗?数组对你来说足够好吗?@jcalz我不关心顺序,但数量对我来说很重要