假设我有一个接口和一个泛型函数
interface SimpleRecord<T> { prop: T }
declare function foo<T>(): SimpleRecord<T>[]
如果别人的库没有导出SimpleRecord
,我又想拿到foo<T>
返回值的类型,对于一般的函数,可以这样做:
type ret = ReturnType<typeof console.log>
但是对于带了泛型的函数,这样做会出错:
type ret<T> = ReturnType<typeof foo<T>>
// [ts] 应为">"。
这样又会把泛型彻底丢掉:
type ret<T> = ReturnType<typeof foo>
declare const a: ret<number>
// a: SimpleRecord<{}>[]
除非这样:
const unused = foo<number>()
declare const a: typeof unused
// a: SimpleRecord<number>[]
但是会触发一次函数调用,如果foo
有副作用就会玩脱。
所以请教一下,到底怎样才能实现type ret<T> = ReturnType<typeof foo<T>>
?
不知道这是不是你想要的