我收到一个数字 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 ...
}
有没有更简单的方法来做到这一点?
原文由 Tim Schoch 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您希望它与字符串枚举一起使用,则需要使用
Object.values(ENUM).includes(ENUM.value)
因为字符串枚举不是反向映射的,根据 https://www.typescriptlang.org/docs/handbook /release-notes/typescript-2-4.html :变成:
所以你只需要这样做:
如果您收到以下错误:
Property 'values' does not exist on type 'ObjectConstructor'
,那么您不是针对 ES2017。您可以使用此 tsconfig.json 配置:或者你可以做任何演员: