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

为常量树形结构递归生成键控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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:17:05