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

如何在Typescript中从嵌套数组的常量对象生成联合类型?

实现方案

步骤1:给常量对象添加const断言

首先需要确保你的常量对象的类型被TypeScript正确收窄到字面量类型,否则colors字段会被推断为string[],无法提取具体的颜色字面量:

const rack = {
    topShelf: {
        colors: ["red", "green"],
    },
    middleShelf: {
        colors: ["yellow", "blue"],
    },
    bottomShelf: {
        colors: ["orange", "purple"],
    },
// 此处添加const断言
} as const;

步骤2:编写通用提取类型

不需要手动枚举每个顶层字段,用以下类型自动遍历所有字段提取联合类型:

type ExtractObjectColor<T> = T[keyof T]["colors"][number];

// 直接使用即可生成目标联合类型
type Color = ExtractObjectColor<typeof rack>;
// 此时Color的类型就是:"red" | "green" | "yellow" | "blue" | "orange" | "purple"

类型逻辑说明

  • keyof T会自动获取常量对象所有顶层键的联合,不管你有3个还是30个字段都能自动覆盖
  • T[keyof T]获取所有顶层键对应子对象的联合类型
  • 最后通过["colors"][number]提取所有子对象colors数组的元素联合类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 04:24:02