怎么实现以下功能的 typescript 类型?

作者站长头像
站长
· 阅读数 15

实现一个类型 Path,功能是可以提取对象的 key 路径,例如

Path<{foo: {bar: string}, baz: number}> = 'foo' | 'foo.bar' | 'baz'
回复
1个回答
avatar
test
2024-08-11
type Path<T, K extends keyof T = keyof T> =
    K extends string
    ? K | (T[K] extends object
        ? `${K}.${Path<T[K]>}`
        : never)
    : never
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容