自从TypeScript引入了联合类型以来,我想知道是否有任何理由声明枚举类型.请考虑以下枚举类型声明:
enum X { A, B, C }
var x:X = X.A;
Run Code Online (Sandbox Code Playgroud)
和类似的联合类型声明:
type X: "A" | "B" | "C"
var x:X = "A";
Run Code Online (Sandbox Code Playgroud)
如果它们基本上服务于同一目的,并且工会更强大和更具表现力,那么为什么需要枚举?
是不是可以将参数类型设置为枚举?像这样:
private getRandomElementOfEnum(e : enum):string{
var length:number = Object.keys(e).length;
return e[Math.floor((Math.random() * length)+1)];
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,Intellij会将此代码标记为未知.并建议重命名变量,这有意义吗?
private getRandomElementOfEnum(e : any):string{
var length:number = Object.keys(e).length;
return e[Math.floor((Math.random() * length)+1)];
}
Run Code Online (Sandbox Code Playgroud)
本规范运作正常.但不像优雅和代码方便.
是否有可能或稍微解决方法将枚举定义为参数?
编辑:
在研究了这些答案之后,我是否可以使用一组定义的枚举来做到这一点,类似于enum1 | enum2 | enum3?