vscode中无法解析出嵌套泛型

358 阅读1分钟

问题

在使用vscode开发的过程中,当将鼠标悬停在嵌套类型上时,无法显示出最终的类型。 具体见下图:

image.png

这个问题也有人给TS官方提了issues,但是官方到目前为止好像还是没有出解决方案。

自定义解决方案: ExpandNestedGeneric

type obj = {
  name: 'name'
  age: 23
}

type nestedObj = {
  a: obj
  b: '123'
  c: () => string
}

type TTuple = ['string', 'number']

// 一个接收泛型的工具类型
type TToolType<S> = S extends 'string' ? obj : nestedObj
type ExpandNestedGeneric<T> = T extends object
  ? T extends Function
    ? T
    : T extends infer O
    ? { [K in keyof O]: ExpandNestedGeneric<O[K]> }
    : never
  : T

结果

code.png

不使用ExpandNestedGeneric时

image.png

使用ExpandNestedGeneric后

image.png