次の機能があります:
function test(): number {
return 42;
}
関数の型は次のように取得できますtypeof
:
type t = typeof test;
ここでは、t
になります() => number
。
関数の戻り値の型を取得する方法はありますか?の代わりにを取得t
したいと思います。number
() => number
ベストアンサー1
編集
TypeScript 2.8 以降では、これが正式に可能になりましたReturnType<T>
。
type T10 = ReturnType<() => string>; // string
type T11 = ReturnType<(s: string) => void>; // void
type T12 = ReturnType<(<T>() => T)>; // {}
type T13 = ReturnType<(<T extends U, U extends number[]>() => T)>; // number[]
見るこのプルリクエストはMicrosoft/TypeScriptへ詳細については。
TypeScript は素晴らしいです!
昔ながらのハック
残念ながら、ライアンの回答はもう機能しません。しかし、私はハックでそれを修正し、非常に満足しています。ご覧ください:
const fnReturnType = (false as true) && fn();
これはfalse
のリテラル値にキャストすることで機能しtrue
、型システムは戻り値が関数の型であると認識しますが、実際にコードを実行すると で短絡しますfalse
。