[解決済み] Typescript - Error クラスの拡張
質問
カスタム エラーをスローして、"Error" の代わりにクラス名をコンソールに出力しようとしていますが、うまくいきません。
class CustomError extends Error {
constructor(message: string) {
super(`Lorem "${message}" ipsum dolor.`);
this.name = 'CustomError';
}
}
throw new CustomError('foo');
出力は
Uncaught Error: Lorem "foo" ipsum dolor
.
期待すること
Uncaught CustomError: Lorem "foo" ipsum dolor
.
これってTSだけで(JSのプロトタイプをいじらずに)できるのかなぁ?
どうすれば解決するのでしょうか?
Typescript バージョン 2.1 を使用していて、ES5 にトランスパイルしていませんか?可能性のある問題や回避策については、Breaking Changes ページのこのセクションを確認してください。 https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
該当するビットです。
<ブロッククオート推奨としては、super(...)呼び出しの直後にプロトタイプを手動で調整することができます。
class FooError extends Error {
constructor(m: string) {
super(m);
// Set the prototype explicitly.
Object.setPrototypeOf(this, FooError.prototype);
}
sayHello() {
return "hello " + this.message;
}
}
しかし、FooErrorのサブクラスは、同様にプロトタイプを手動で設定しなければなりません。Object.setPrototypeOf をサポートしないランタイムでは、代わりに次のように使用できます。
__proto__
.
残念ながら、これらの回避策は Internet Explorer 10 およびそれ以前では機能しません。プロトタイプからインスタンス自体にメソッドを手動でコピーすることはできますが (たとえば、FooError.prototype を this にコピーする)、プロトタイプ チェーン自体を修正することはできません。
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] 指定された要素にクラスを追加するには?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ES6構文とBabelでJavascriptのエラーを拡張する
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)