问题
在使用vscode开发的过程中,当将鼠标悬停在嵌套类型上时,无法显示出最终的类型。 具体见下图:
这个问题也有人给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
结果
不使用ExpandNestedGeneric时
使用ExpandNestedGeneric后