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

如何将TypeScript字符串数组转换为字符串字面量联合类型?

如何将字符串数组转换为TypeScript字符串字面量联合类型?

当然可以实现,核心是利用TypeScript的const断言和索引访问类型,步骤如下:

  • 首先给数组添加as const断言,让TypeScript将数组元素锁定为具体的字面量类型,而非宽泛的string:
const arr = ['a', 'b', 'c'] as const;
  • 接着通过typeof获取数组的类型,再用[number]索引访问提取所有元素的类型,就能得到对应的字面量联合类型:
type MyType = typeof arr[number];
// 此时 MyType 等价于 'a' | 'b' | 'c'

为什么要加as const?

如果不加这个断言,TypeScript会默认把arr推断为string[]类型,这时typeof arr[number]只会得到string,无法生成具体的字面量联合。

验证效果

你可以写个函数测试这个类型:

function printValue(val: MyType) {
  console.log(val);
}

printValue('a'); // 正常运行
printValue('d'); // TypeScript会报错,因为'd'不在联合类型范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:45:41