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

如何从常量对象数组提取属性值生成TypeScript字符串联合类型?

提取对象数组指定属性的字面量联合类型

你已经用as const把数组转为只读元组,这一步保留了每个属性的精确字面量类型,接下来直接通过类型索引就能生成目标联合类型:

const options = [
  { label: 'First Name', value: 'firstName' }, 
  { label: 'Last Name', value: 'lastName' },
  { label: 'Email', value: 'email' }
] as const;

// 直接生成目标联合类型
type Values = typeof options[number]['value'];
// Values 等价于 'firstName' | 'lastName' | 'email'

原理拆解:

  • typeof options 获取数组的只读元组类型,包含每个元素的字面量细节
  • [number] 索引元组,得到所有数组元素的类型联合
  • ['value'] 提取每个元素的value属性类型,最终组合成字符串字面量联合

如果想拆分步骤更清晰,也可以先定义数组元素类型再提取属性:

type Option = typeof options[number];
type Values = Option['value'];

你用map得到数组类型是因为Array.prototype.map的返回值本身就是数组结构,会把元素类型包装成数组而非直接返回联合类型。如果需要同时得到这个数组常量,可基于Values类型断言:

const values = options.map(x => x.value) as Values[];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:50:26