mosya Type Challenges

問題に挑戦!

Promise ライクな型が内包する型をどのように取得すればよいでしょうか。

例えば:Promise<ExampleType>という型がある場合、どのようにして ExampleType を取得すればよいでしょうか。

type ExampleType = Promise<string>;

type Result = MyAwaited<ExampleType>; // string
引用元

この問題はType Challengesの以下の問題を記載したものです。

💡ヒント

inferは推論された型を取得するのに役立ちます。

type ReturnType<T> = T extends (
  ...args: any[]
) => infer R
  ? R
  : any;

上記のコードではReturnTypeに渡された型の関数の引数を推論してその型を返します。
この性質を利用して、Promiseの内部の型を推論して取り出すことができます。

🙌 解説はこちら