1. ホーム
  2. typescript

[解決済み] Promiseの型はどのようにアンラップするのですか?

2022-11-10 04:33:23

質問

次のようなコードがあるとします。

async promiseOne() {
  return 1
} // => Promise<number>

const promisedOne = promiseOne()

typeof promisedOne // => Promised<number>

プロミスの結果の型(この単純化されたケースでは数値)を独自の型として抽出するにはどうしたらよいでしょうか。

どのように解決するのですか?

TypeScript 4.5

この Awaited 型は言語に組み込まれたので、自分で書く必要はありません。

type T = Awaited<Promise<PromiseLike<number>> // => number

TypeScript 4.1~4.4について

いくつかの定義が可能で、自分で実装することができます。最もシンプルなのは

type Awaited<T> = T extends PromiseLike<infer U> ? U : T
// Awaited<Promise<number>> = number

この型では PromiseLike ではなく Promise

T

Promise<Promise<string>>