鍍金池/ 問答/HTML/ Typescript: 怎樣拿到泛型函數(shù)的返回類型?

Typescript: 怎樣拿到泛型函數(shù)的返回類型?

假設(shè)我有一個接口和一個泛型函數(shù)

interface SimpleRecord<T> { prop: T }

declare function foo<T>(): SimpleRecord<T>[]

如果別人的庫沒有導(dǎo)出SimpleRecord,我又想拿到foo<T>返回值的類型,對于一般的函數(shù),可以這樣做:

type ret = ReturnType<typeof console.log>

但是對于帶了泛型的函數(shù),這樣做會出錯:

type ret<T> = ReturnType<typeof foo<T>>
// [ts] 應(yīng)為">"。

這樣又會把泛型徹底丟掉:

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>[]

但是會觸發(fā)一次函數(shù)調(diào)用,如果foo有副作用就會玩脫。

所以請教一下,到底怎樣才能實現(xiàn)type ret<T> = ReturnType<typeof foo<T>>?

回答
編輯回答
涼汐
declare function foo<T>():T[];

返回泛型?我覺得你問題描述有點混亂。
直接說你的輸入,以及預(yù)期輸出即可

2017年8月11日 16:14