Dev Study
← 解説「Promise<T> — 非同期の結果の型」に戻る

サンプルコードで身につける: Promise<T> — 非同期の結果の型

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1Promise<number> と .then の最小形

Promise<number> は「あとで number が手に入る」という意味の型です。.then に渡した関数の引数 score には、中身の number がそのまま流れてきます。最後の console.log が先に表示されることから、.then の中身は後から実行されると分かります。

TypeScript

2new Promise — 時間のかかる処理を包む

時間のかかる処理を Promise にする基本形が new Promise です。値の用意ができたら resolve(値) を呼ぶと、その値が .then 側へ届きます。戻り値の型を Promise<string> と書いておけば、resolve に渡せる値も string に揃えてチェックされます。

TypeScript

3.then チェーン — 型がリレーされる

.then の中で return した値は、次の .then の引数に流れます。string → number → boolean と、型がリレーのように引き継がれていくのを確認してください。「取得して、加工して、判定する」という実務の処理の流れがそのままこの形になります。

TypeScript

4Promise.all — 複数の結果をまとめて待つ

Promise.all は複数の Promise をまとめて待ち、全部そろってから .then を呼びます。結果の配列は渡した順に並ぶことが保証されているので、出力は常に同じになります。1つずつ順番に待つより速く、順序の心配もいりません。

TypeScript

5APIの並行fetch風 — 2つの取得を同時に走らせる

API の並行呼び出しを模した実務寄りの例です。ユーザー名と投稿数の取得を同時に走らせ、両方そろった時点でまとめて表示します。Promise<string> と Promise<number> を混ぜても、結果の型は位置ごとに string と number として正しく推論されます。

TypeScript