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

如何从嵌套对象的属性值中生成联合类型?

如何从对象中提取属性值生成指定联合类型?

首先修正你代码里的语法错误:mother对象的make属性后缺失冒号,补全后结合TypeScript的类型特性,就能生成目标联合类型,步骤如下:

1. 给对象添加as const断言

添加这个断言是为了让TypeScript保留属性值的字面量类型,而不是宽泛的string类型:

const familyCars = {
  father: {
    make: "BMW",
    color: "white"
  },
  mother: {
    make: "Toyota", // 补全缺失的冒号
    color: "white"
  },
  son: {
    make: "Ford",
    color: "black"
  }
} as const;

2. 定义联合类型

通过类型操作符逐层提取目标属性的类型:

type CarMake = typeof familyCars[keyof typeof familyCars]["make"];

此时CarMake的类型就是你需要的 "BMW" | "Toyota" | "Ford"。

各部分类型操作的解释

  • typeof familyCars:获取familyCars的具体类型(因as const断言,所有属性值都是字面量类型)
  • keyof typeof familyCars:得到对象键的联合类型 "father" | "mother" | "son"
  • typeof familyCars[keyof typeof familyCars]:获取所有家庭成员车辆对象的类型联合
  • ["make"]:从每个车辆类型中提取make属性的类型,最终得到目标联合类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:13