【发布时间】:2017-10-03 22:15:13
【问题描述】:
我收到一个号码 type = 3 并且必须检查它是否存在于这个枚举中:
export const MESSAGE_TYPE = {
INFO: 1,
SUCCESS: 2,
WARNING: 3,
ERROR: 4,
};
我发现最好的方法是将所有枚举值作为一个数组并在其上使用 indexOf。但是生成的代码不是很清晰:
if( -1 < _.values( MESSAGE_TYPE ).indexOf( _.toInteger( type ) ) ) {
// do stuff ...
}
有没有更简单的方法?
【问题讨论】:
-
if(Object.values(MESSAGE_TYPE).includes(+type)?你无能为力。 -
这在 ES6 中有效,但在 ES5 中无效
-
@TimSchoch 你可以做
!!MESSAGE_TYPE[type]来检查一个值是否存在。如果type的值在MESSAGE_TYPE上不存在,MESSAGE_TYPE[type]将返回 undefined -
@Kevin Babcock 但是,其中一个枚举值映射到
0将失败。 -
@Ingo Bürk 好点!我想可以进行明确的检查
MESSAGE_TYPE[type] !== undefined
标签: javascript typescript enums