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

如何从对象数组自动生成TypeScript联合类型

从对象数组自动生成value值的联合类型

要实现这个需求,你可以借助TypeScript的const断言和索引访问类型,具体步骤如下:

  1. 用as const锁定数组的字面量类型
    给原数组添加as const断言,让TypeScript保留数组中每个值的具体字面量类型,避免自动拓宽为宽泛的string类型:

    const arr = [{
      value: 'value1',
      key: 'key1'
    }, {
      value: 'value2',
      key: 'key2'
    }] as const;
    
  2. 定义目标联合类型
    通过typeof获取数组的类型,再用索引访问语法提取所有元素的value属性值,自动生成联合类型:

    type Values = typeof arr[number]['value'];
    // 此时 Values 的类型为 'value1' | 'value2'
    

原理说明

  • as const会将数组及其内部对象转为只读的字面量类型,确保TypeScript不会丢失具体的字符串值信息。
  • typeof arr[number]表示取数组中任意元素的类型,再通过['value']访问该元素的value属性,最终得到所有value值的联合类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:42:01