为常量树形结构递归生成键控TypeScript类型
TypeScript 树形结构转标签键关联类型
我有一个用于建模嵌套关系的常量树形对象,想要构建一个类型,以父对象的固定属性label作为键来关联这些关系。
输入的常量结构
const tree = { label: 'root', leaves: [ { label: 'root.a', }, { label: 'root.b', leaves: [ { label: 'root.b.a', }, ], }, { label: 'root.c', leaves: [ { label: 'root.c.a', }, { label: 'root.c.b', leaves: [ { label: 'root.c.b.a', }, ], }, ], }, ], } as const
期望推断出的字面量类型
type KeyedTree = { "root.a": {}, "root.b": { "root.b.a": {} }, "root.c": { "root.c.a": {}, "root.c.b": { "root.c.b.a": {} } } }
已尝试的进展
我已经实现了判断特定节点是否包含子节点的类型,若包含则生成带有正确字符串字面量键的Record类型,但无法将其扩展为遍历整个对象以捕获完整的嵌套结构,也没办法遍历所有节点(只能通过硬编码索引处理单个节点)。我认为核心思路是对子节点递归应用类型处理逻辑,但不清楚如何在TypeScript类型系统中完成这种递归遍历。
内容的提问来源于stack exchange,提问作者austerj
相关产品推荐
相关产品推荐

