我的枚举看起来像这样
export enum Alignment {
Top = 'top',
Right = 'right',
Bottom = 'bottom',
Left = 'left',
}
通常我会用它来定义界面,例如反应组件道具如
interface CompProps {
align: Alignment;
}
但现在想知道我是否只能使用这个枚举的部分,比如
interface CompProps {
align: `part of Alignment: left and top`;
}
这有共同的模式吗?
我可能会想到:
一个。 align: Alignment.Left | Alignment.Top;
B中。为此任务创建新的枚举,如
enum CompAlignment {
Top = Alignment.Top,
Left = Alignment.Left,
}
答案 0 :(得分:0)
当枚举中的所有成员都有文字枚举值时,会出现一些特殊的语义。
首先,枚举成员也成为了类型!例如,我们可以说某些成员只能拥有枚举成员的值。
这意味着选项A有效,因为您可以利用联合枚举来实现您的目标。
enum ShapeKind {
Circle,
Square,
}
interface Circle {
kind: ShapeKind.Circle;
radius: number;
}
interface Square {
kind: ShapeKind.Square;
sideLength: number;
}
let c: Circle = {
kind: ShapeKind.Square,
// ~~~~~~~~~~~~~~~~ Error!
radius: 100,
}