如标题中所述,如何确定Typescript中枚举中的元素数量,例如本例中的元素数量
enum ExampleEnum {
element1 = 1,
element2 = 2,
element3 = 3,
element4 = 4,
element5 = 5,
element6 = 6
}
var exampleEnumElementCount:number = ?
Run Code Online (Sandbox Code Playgroud)
如何确定计数?在这种情况下它应该是6
Zen*_*Zen 31
AFAIK,Typescript没有提供获取枚举元素数量的标准方法.但是从它的实现来看,有一种巧妙的方法可以做到.
Object.keys(ExampleEnum).length / 2
Run Code Online (Sandbox Code Playgroud)
ste*_*ert 22
如果您有一个从 开始计数的枚举0,您可以插入一个占位符作为大小的占位符作为最后一个元素,如下所示:
enum ERROR {
UNKNOWN = 0,
INVALID_TYPE,
BAD_ADDRESS,
...,
__LENGTH
}
Run Code Online (Sandbox Code Playgroud)
然后使用ERROR.__LENGTH将是枚举的大小,无论您插入多少个元素。
对于任意偏移量,您可以跟踪它:
enum ERROR {
__START = 7,
INVALID_TYPE,
BAD_ADDRESS,
__LENGTH
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,有意义的错误数量将是 ERROR.__LENGTH - (ERROR.__START + 1)
接受的答案不适用于任何附加值的枚举版本。它仅适用于最基本的枚举。这是我的适用于所有类型的版本:
export function enumElementCount(enumName: any): number {
let count = 0
for(let item in enumName) {
if(isNaN(Number(item))) count++
}
return count
}
Run Code Online (Sandbox Code Playgroud)
这是摩卡的测试代码:
it('enumElementCounts', function() {
enum IntEnum { one, two }
enum StringEnum { one = 'oneman', two = 'twoman', three = 'threeman' }
enum NumberEnum { lol = 3, mom = 4, kok = 5, pop = 6 }
expect(enumElementCount(IntEnum)).to.equal(2)
expect(enumElementCount(StringEnum)).to.equal(3)
expect(enumElementCount(NumberEnum)).to.equal(4)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11863 次 |
| 最近记录: |