如何比较 Typescript 中的枚举

比较 Typescript 中的枚举

How to compare Enums in Typescript

要比较枚举,请使用点表示法获取特定枚举属性的值并将其与另一个值进行比较,例如if (MyEnum.Small < 2) {}. 没有提供初始值的数字枚举的值是自动递增的整数,从0.

索引.tsx
enum ShirtSizes { Small, Medium, Large, } const small = ShirtSizes.Small; // 👉️ 0 const medium = ShirtSizes.Medium; // 👉️ 1 if (small < medium) { console.log('✅ This runs'); } if (small === 0) { console.log('✅ This runs'); } const enumKey = ShirtSizes[ShirtSizes.Small]; console.log(enumKey); // 👉️ "Small" if (enumKey === 'Small') { console.log('✅ This runs'); }

您可以使用点表示法访问枚举的特定值。

要将值与另一个值进行比较,请使用比较运算符之一,例如
<(小于)>(大于)或===(等于)。

if块仅在满足条件时运行。

该示例显示了一个
数字枚举,我们没有为其Small键值指定初始值 is 0Medium=1Large= 2

使用数字枚举时,可以使用
反向映射
根据值获取相应的键。

索引.tsx
enum ShirtSizes { Small, Medium, Large, } const small = ShirtSizes.Small; // 👉️ 0 const medium = ShirtSizes.Medium; // 👉️ 1 const enumKey = ShirtSizes[ShirtSizes.Small]; console.log(enumKey); // 👉️ "Small" const eKey = ShirtSizes[0]; console.log(eKey); // 👉️ Small

上面的示例使用反向映射来获取对应于 value 的枚举键0

请注意,您只能在使用数字枚举时使用反向映射,因为它们不是为字符串枚举生成的。

下面是一个示例,说明如何获取字符串枚举的键和值数组,并检查数组中是否包含特定值。

索引.js
enum ShirtSizes { Small = 'SMALL', Medium = 'MEDIUM', Large = 'LARGE', } const keys = Object.keys(ShirtSizes); console.log(keys); // 👉️ ['Small', 'Medium', 'Large'] if (keys.includes('Small')) { console.log('✅ This runs'); } const values = Object.values(ShirtSizes); console.log(values); if (values.includes('SMALL' as unknown as ShirtSizes)) { console.log('✅ This runs'); }

TypeScript 中的枚举是真实的对象,因此我们可以使用Object.keys()
Object.values()方法来获取枚举键和值的数组。

这些示例使用该includes()方法检查枚举的键和值中是否包含特定值,但您可以根据您的用例进行调整。

如果使用数字枚举,该Object.keys()方法返回一个包含枚举键和值的数组,因此您必须过滤掉不需要的值。

索引.tsx
enum ShirtSizes { Small, Medium, Large, } const keys = Object.keys(ShirtSizes).filter((v) => isNaN(Number(v))); console.log(keys); // 👉️ ['Small', 'Medium', 'Large'] if (keys.includes('Small')) { console.log('✅ This runs'); } const values = Object.values(ShirtSizes).filter((v) => !isNaN(Number(v))); console.log(values); // 👉️ [0, 1, 2]

数字枚举的概念是相同的,但是我们必须添加对该
filter方法的调用以从返回的数组中排除不必要的值。

发表评论