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

如何从对象数组中提取联合属性类型?

TypeScript从对象数组推断字符串联合类型

当然可以通过类型推断实现,核心是让TypeScript保留数组中字符串的字面量类型,具体步骤如下:

  1. 用as const断言定义数组,强制TS推断出具体的字面量值而非宽泛的string类型:
const data = [{ test: 'first'}, { test: 'second'} ] as const;
  1. 通过类型操作提取目标联合类型:
type TestType = typeof data[number]['test'];
// 此时 TestType 的类型为 'first' | 'second'

原理说明

  • as const会将数组转换为只读元组,同时把每个对象的test属性锁定为具体的字面量类型(而非通用的string);
  • typeof data获取该只读元组的类型;
  • data[number]表示元组中任意元素的类型;
  • 最后通过['test']提取元素的test属性类型,自然得到两个字面量的联合类型。

如果省略as const,TS会默认将test推断为string,此时TestType的类型会是string,无法得到目标的精准联合类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:55:37