← inaro.devAI駆動開発 学習ツール
応用

型ガード関数とunknown

なぜ学ぶか: 「何が来るか分からない値」を安全に扱うには?anyは「チェックしない」、unknownは「チェックするまで使わせない」— 似ているようで正反対です。一番よく出会う場面(catch)で見てみましょう。

まずはこの例を見てみましょう

try {
  await fetch("...");
} catch (e) {
  // e は unknown(何が投げられたか分からない)

  // e.message               ← いきなりは読めない(赤線)

  if (e instanceof Error) {
    console.log(e.message); // 確認した後なら読める
  }
}

unknownは「検査するまで触れない」型。anyと違って、確認を強制してくれます。

unknown=正体不明・要検査

そのままでは何もできず、ifで確認してから使います。「安全版のany」です。

anyとの違い

anyへの操作は素通り(実行時に落ちうる)、unknownへの操作は赤線(実行前に止まる)。分からない値にはunknownが正解です。

catchのeはunknown

例のe instanceof Errorは「eがErrorなら」という確認です。この形は定番なので、そのまま覚えてOKです。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。