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

如何让TypeScript自动推断枚举反向查找的字面量类型?

问题解答

可行,有两种常用方案:

方案一:使用const enum

将普通枚举改为const enum,TypeScript会在编译阶段完全内联枚举的反向查找结果,直接推断出字面量类型,无需任何断言:

const enum RadCheck {
  blank = 0,
  userDefined = 1,
  macAddress = 2,
}
const H = RadCheck[RadCheck.blank]; // 类型自动推断为 "blank"

注意:const enum会被编译工具完全内联,不会在运行时生成枚举对象,若需要保留枚举的运行时结构,此方案不适用。

方案二:用对象+as const替代枚举

如果需要保留运行时的映射结构,可以用普通对象结合as const定义枚举,再手动生成反向映射,同样能得到字面量类型:

const RadCheck = {
  blank: 0,
  userDefined: 1,
  macAddress: 2,
} as const;

// 生成类型安全的反向映射
type RadCheckValue = typeof RadCheck[keyof typeof RadCheck];
const RadCheckReverse = Object.fromEntries(
  Object.entries(RadCheck).map(([key, val]) => [val, key])
) as { [Val in RadCheckValue]: keyof typeof RadCheck };

const H = RadCheckReverse[RadCheck.blank]; // 类型自动推断为 "blank"

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:45:22