如何从嵌套对象的属性值中生成联合类型?
如何从对象中提取属性值生成指定联合类型?
首先修正你代码里的语法错误: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
相关产品推荐
相关产品推荐

