如何将TypeScript对象类型的键转换为逗号分隔字符串类型?
实现TypeScript对象类型到键的逗号分隔字符串类型转换
当然可以实现这个需求。下面是GetObjKeys类型的具体实现方案:
type Obj = { val1: string; val2: string; val3: string; }; // 核心类型实现 type Join<T extends string[], Separator extends string> = T extends [infer First extends string, ...infer Rest extends string[]] ? Rest extends [] ? First : `${First}${Separator}${Join<Rest, Separator>}` : ''; type GetObjKeys<T extends object> = Join<Array<keyof T>, ','>; // 测试使用 type ObjKeys = GetObjKeys<Obj>; // 类型结果:'val1,val2,val3'
实现说明:
Join类型:递归处理字符串数组类型,将其用指定分隔符拼接为单个字符串类型。通过条件类型提取数组首个元素,递归拼接剩余元素,直到数组为空时终止。GetObjKeys类型:先用keyof T获取对象的键联合类型,再将联合类型转为数组类型(仅类型层面有效),最后通过Join类型以逗号为分隔符完成拼接,得到目标字符串类型。
该方案支持任意键为字符串类型的非空对象,完全适配你在API中间层提升类型安全性的需求——通过强制匹配对象键集合,可有效避免字段拼写错误、遗漏等潜在问题。
内容的提问来源于stack exchange,提问作者Mattias Alm
相关产品推荐
相关产品推荐

