【TypeScript】TypeScriptのカスタムエラーについてまとめてみた!

こんにちは。

野中やすおです。

業務でTypeScriptのカスタムエラーを使うことがあったので、今回の記事ではカスタムエラーについてまとめてみることにしました。

TypeScriptのカスタムエラー

上記では、TypeScriptのカスタムエラークラスの例を書いています。JavaScriptでも同様です。

BaseErrorという名前のクラスが定義し、このクラスでは、Errorクラスを継承しています。Errorクラスは、JavaScriptの組み込みエラークラスで、例外を表すために使用されます。

次にBaseErrorクラスのコンストラクタは、1つの引数messageを受け取っています。

super(message)では、親クラスのコンストラクタを呼び出して、messageを渡しています。

次の行のthis.nameに現在のクラス名を設定しています。これによってエラーオブジェクトのnameプロパティにクラス名が表示されます。

また補足ですが、Object.setPrototypeOf(this, new.target.prototype)は、TypeScriptの出力ターゲットがES2015より古い場合(ES3、ES5)にのみ必要な一行です。ES6の場合は不要です。

またBaseErrorクラスを継承して、ValidationErrorクラスを作成しています。上記のようにBaseErrorクラスから新しいエラークラスを作成することができます。

また実際に呼び出しする箇所では、以下のような実装になります。

上記の例では、もし入力が無効である場合には、throw文でValidationErrorをスローします。そしてエラーオブジェクトのコンストラクタにはエラーメッセージが渡されます。

またエラーオブジェクトがValidationErrorのインスタンスであるかどうかをチェックし、それに応じて処理を行います。ValidationErrorの場合は、エラーメッセージが表示され、それ以外のエラーの場合は、予期しないエラーが発生したことを示すメッセージが表示するようにしています。

以上、カスタムエラーについてまとめてみました!

参考

UGA Boxxx

JavaScriptで作ったアプリでのエラーをハンドリングしたい 例えば、Node.jsのAPIサーバーでリクエストパラ…