型ガード関数と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が生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。