相关疑难解决方法(0)

打字稿有工会,枚举是多余的?

自从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)

如果它们基本上服务于同一目的,并且工会更强大和更具表现力,那么为什么需要枚举?

enums unions typescript

38
推荐指数
4
解决办法
9655
查看次数

枚举中的枚举作为参数

是不是可以将参数类型设置为枚举?像这样:

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?

enums typescript

36
推荐指数
7
解决办法
3万
查看次数

标签 统计

enums ×2

typescript ×2

unions ×1