You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断字符串是否为TypeScript枚举的有效字符串表示?

判断TypeScript枚举的有效字符串表示

针对你定义的这个数字枚举:

enum Items {
  One = 1,
  Two,
}

要判断字符串s是不是它的有效字符串表示(即是否是枚举的原始键名,比如'One'有效,'1'无效),可以这么做:

核心思路

TypeScript数字枚举编译后会生成双向映射的对象——既包含键→值的映射,也包含值→键的反向映射(比如Items[1] = 'One')。所以我们需要先过滤掉对象中那些数字形式的键,只保留原始的字符串键,再判断目标字符串是否在其中。

具体实现

1. 针对特定枚举的判断函数

enum Items {
  One = 1,
  Two,
}

// 提取枚举的所有原始字符串键
const validItemKeys = Object.keys(Items).filter(key => isNaN(Number(key)));

function isValidItemString(s: string): boolean {
  return validItemKeys.includes(s);
}

// 测试示例
console.log(isValidItemString('One'));  // true
console.log(isValidItemString('Two'));  // true
console.log(isValidItemString('1'));    // false
console.log(isValidItemString('Three'));// false

2. 通用枚举判断函数(适用于任何枚举)

如果需要复用逻辑,可以写一个通用函数:

function isValidEnumKey<T extends object>(enumObj: T, str: string): boolean {
  // 过滤掉数字键,只保留原始字符串键
  const enumKeys = Object.keys(enumObj).filter(key => isNaN(Number(key)));
  return enumKeys.includes(str);
}

// 使用示例
console.log(isValidEnumKey(Items, 'One')); // true
console.log(isValidEnumKey(Items, '1'));   // false

这样就能精准判断目标字符串是否是枚举的有效原始字符串键,排除反向映射产生的数字字符串键。

内容的提问来源于stack exchange,提问作者eouw0o83hf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:36:28