gpt4 book ai didi

javascript - 检查 TypeScript 的枚举中是否存在值

转载 作者:IT王子 更新时间:2023-10-29 02:45:49 27 4
gpt4 key购买 nike

我收到一个数字 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 ...
}

有更简单的方法吗?

最佳答案

如果您希望它与字符串枚举一起使用,您需要使用 Object.values(ENUM).includes(ENUM.value),因为根据 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-4.html,字符串枚举没有反向映射。 :

enum Vehicle {
Car = 'car',
Bike = 'bike',
Truck = 'truck'
}

变成:

{
Car: 'car',
Bike: 'bike',
Truck: 'truck'
}

所以你只需要做:

if (Object.values(Vehicle).includes('car')) {
// Do stuff here
}

如果您收到以下错误:Property 'values' does not exist on type 'ObjectConstructor',那么您的目标不是 ES2017。您可以使用此 tsconfig.json 配置:

"compilerOptions": {
"lib": ["es2017"]
}

或者你可以做一个任意转换:

if ((<any>Object).values(Vehicle).includes('car')) {
// Do stuff here
}

关于javascript - 检查 TypeScript 的枚举中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com