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

如何在TypeScript中获取数组联合类型的所有字符串字面量(避免枚举)

在TypeScript中不使用枚举获取字符串字面量联合类型的所有值

要实现需求的核心点是:TypeScript的类型仅存在于编译阶段,运行时会被擦除,所以无法直接从纯类型(比如'Value1' | 'Value2' | 'Value3')获取对应的运行时值。正确的做法是先定义包含所有字面量的运行时数组,再从数组推导类型,这样类型和运行时值保持一致,无需重复维护。

具体实现

// 定义包含所有字面量的只读数组(as const 让TS推导每个元素的具体字面量类型)
const blaValues = ['Value1', 'Value2', 'Value3'] as const;

// 从数组推导联合类型
type BlaType = typeof blaValues[number];

// 你的数组变量使用推导出来的类型
const bla: BlaType[] = [];

// 直接使用blaValues即可获取所有字面量值
console.log(blaValues);
// 输出: ["Value1", "Value2", "Value3"]

关键说明

  • as const 将数组转为只读元组,确保TypeScript能识别每个元素的具体字面量类型(而非宽泛的string类型)。
  • typeof blaValues[number] 遍历元组的所有元素类型,生成对应的联合类型'Value1' | 'Value2' | 'Value3'。
  • 这种方式避免了枚举,同时保证类型和运行时值的一致性,后续新增/修改字面量只需改动blaValues数组,类型会自动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:00:01