Dev Study
← 解説「instanceof による絞り込み」に戻る

サンプルコードで身につける: instanceof による絞り込み

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

1Dateと文字列のどちらかを受け取る

instanceof による絞り込みの最も基本の形です。value instanceof Date が真のブロックでは Date のメソッドが安全に呼べ、偽の側では自動的に string に絞り込まれます。日付が確定していればDate、未定なら文字列、という実務によくあるデータをそのまま扱えます。

TypeScript

21件でも配列でも受け取れる引数をそろえる

配列は Array というコンストラクタから作られるオブジェクトなので、instanceof Array で判定できます。「タグは1個なら文字列で、複数なら配列で渡せる」という柔軟な引数を、関数の入口で必ず配列にそろえる正規化は、設定値やAPI引数の処理でよく使うパターンです。

TypeScript

3文字列とRegExpのどちらでも検索できる関数

正規表現 RegExp も new で作られる組み込みオブジェクトなので instanceof で判定できます。単純な部分一致なら文字列、パターン検索なら正規表現と、呼び出す側が手軽さと厳密さを選べる検索関数は、ログのフィルタリングなどで実際によく見る形です。

TypeScript

4Errorを値として返して呼び出し側で判定する

throw する代わりに Error オブジェクトを戻り値として返し、呼び出し側が instanceof Error で成否を判定するスタイルです。失敗が戻り値の型(number | Error)に現れるため、エラー処理を書き忘れるとコンパイルが通らないのが利点で、入力の解析処理などで使われます。

TypeScript

5catchした値をエラーの種類で分類する

catch で受け取った値の型は不明なので、instanceof で種類を確かめてから処理を分けます。RangeError は Error の一種なので、具体的な種類から順に判定するのがコツです。外部APIやファイル読み込みの失敗を「想定内のエラーか、想定外か」で分類する実務の定番です。

TypeScript