如何创建type
/interface
(在下面的例子中为AnyColorsWithBlackAndWhite
),用于一个包含强制成员的枚举值数组?我需要black
和white
始终存在。我尝试同时交叉、省略和扩展Array<Color>
和Array<Color.black | Color.white>
,但到目前为止没有成功:
enum Color {
red,
green,
yellow,
blue,
black,
white,
}
interface AnyColorsWithBlackAndWhite
extends Array<Color | Color.black | Color.white> {}
export const Correct: AnyColorsWithBlackAndWhite = [Color.red, Color.yellow, Color.black, Color.white];
export const Wrong1: AnyColorsWithBlackAndWhite = [Color.red, Color.yellow];
export const Wrong2: AnyColorsWithBlackAndWhite = [Color.red, Color.yellow, Color.black];
1条答案
按热度按时间lsmepo6l1#
我看到了两种方法,你要么创建一个用于推理和验证的函数,要么创建一个所有允许状态的并集。第一种方法:
enter link description here
第二:
Playground
正如你可能已经注意到的,我已经创建了这个数组的所有可能状态。6!= 6 * 5 * 4 * 3 * 2 * 1
TupleUnion
生成所有允许状态的组合,并使每种非白色颜色成为可选颜色