関数の戻り値の型を取得する 質問する

関数の戻り値の型を取得する 質問する

次の機能があります:

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

おすすめ記事