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

如何获取嵌套对象的边缘非对象值的联合类型?

如何从深度嵌套对象生成仅包含边缘非对象值的联合类型?

给定对象

const deepNestedObject = {
  a: "value",
  b: {
    c: "nestedvalue",
    d: {
       e: "deepNestedValue"
    }
  }
}

需求

需要实现一个DeepValueOf类型,使得:

type EdgeValueUnion = DeepValueOf<typeof deepNestedObject>;

EdgeValueUnion等价于"value" | "nestedvalue" | "deepNestedValue",即仅包含对象树中最底层的非对象值。

尝试的实现代码

type ValueOf<T> = T[keyof T];

type DeepValueOf<
  T extends Record<string, unknown>,
  Key = keyof T
> = Key extends string
  ? T[Key] extends Record<string, unknown>
    ? DeepValueOf<T[Key]>
    : ValueOf<T>
  : never;

存在的问题

当前实现存在缺陷,它会允许对象树中的中间对象值被赋值给EdgeValueUnion类型的变量,例如以下代码不会触发类型错误:

const edgeValue: EdgeValueUnion = deepNestedObject.b;

内容的提问来源于stack exchange,提问作者JD Francis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:48:28