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

如何在TypeScript中根据对象数组的单个键获取类型枚举

从对象数组的key字段提取值的联合类型

问题场景

现有以下TypeScript代码:

let arr= [{ key: 1, age:22 }, { key: 2, age: 33 }, { key: 4, age: 44}]

需要提取数组中所有对象key字段值的联合类型,最终得到:

type ArrKey = 1 | 2 | 4

实现步骤

1. 锁定数组的字面量类型

首先用as const断言,让TypeScript保留数组中每个key的具体字面量值,避免被自动拓宽为number类型:

const arr = [{ key: 1, age:22 }, { key: 2, age: 33 }, { key: 4, age: 44}] as const;

2. 提取联合类型

通过TypeScript的类型查询工具,逐层提取目标类型:

type ArrKey = typeof arr[number]['key'];

原理说明

  • as const 将数组转换为只读元组,同时把每个属性值固定为字面量类型(比如1而非number)
  • typeof arr[number] 获取数组中任意元素的类型,得到三个对象类型的联合
  • ['key'] 从每个对象类型中提取key字段的类型,最终得到1 | 2 | 4的联合类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:59:57