如何在TypeScript中从对象的字符串类型字段推导对应类型
解决方案
要实现从给定对象推导目标类型,需要分两步操作:
- 锁定对象的字面量类型
默认情况下TypeScript会把obj中type的值推断为宽泛的string类型,无法精准映射到TS原生类型。我们需要用as const断言来保留字面量类型信息:
const obj = { PROP1: { type: 'number', }, PROP2: { type: 'string', }, PROP3: { type: 'boolean', }, PROP4: { type: 'string', }, } as const;
- 创建映射类型推导目标结构
先定义字符串类型到TS原生类型的映射表,再通过keyof typeof obj遍历对象键,完成类型转换:
// 定义字符串类型到TS原生类型的映射 type TypeMap = { number: number; string: string; boolean: boolean; }; // 推导目标类型 type ObjType = { [K in keyof typeof obj]: TypeMap[typeof obj[K]['type']]; };
此时ObjType的类型就完全符合需求:
// 最终推导结果 type ObjType = { PROP1: number; PROP2: string; PROP3: boolean; PROP4: string; };
内容的提问来源于stack exchange,提问作者lulliezy
相关产品推荐
相关产品推荐

