プロジェクトにエラーがあり、これを処理するには試す、キャッチそしてついに。
これは JavaScript では使用できますが、Typescript では使用できません。
私が例外タイプスクリプトの引数としてキャッチ声明ですが、なぜこれを受け入れないのでしょうか?
ここにコードがあります。
private handling(argument: string): string {
try {
result= this.markLibrary(argument);
}
catch(e:Exception){
result = e.Message;
}
return result;
}
ここで例外メッセージが必要ですが、取得できません。そして、以下のエラーが発生しました。
catch 句変数には型注釈を付けることはできません。
ベストアンサー1
編集
unknown
Typescript 4.0では、キャッチ変数を指定する機能が追加されましたany
(問題unknown
) そしてTypeScript 4.4では、catch変数にデフォルトを設定する機能が追加されました(広報)useUnknownInCatchVariables
フラグを使用します。
このフラグを使用すると、次のことが可能になります。
catch(e){
result = e.message; // error under useUnknownInCatchVariables
if (typeof e === "string") {
e.toUpperCase() // works, `e` narrowed to string
} else if (e instanceof Error) {
e.message // works, `e` narrowed to Error
}
}
catch 変数に任意の型を指定することはまだサポートされていません。
元の回答
Typescriptはcatch変数の注釈をサポートしていません。これを許可する提案はありますが、まだ議論中です(ここ)。
唯一の解決策は、型アサーションまたは追加の変数を使用することです。
catch(_e){
let e:Error= _e;
result = e.message;
}
catch(e){
result = (e as Error).message;
}
残念ながら、これも同様に機能し、完全にチェックされていません。
catch(e){
result = e.MessageUps;
}
注記
提案に関する議論を読んでわかるように、JS ではスローされるものすべてがインスタンスである必要はないのでError
、この仮定には注意してください。
おそらく、tslint を使用するとno-unsafe-any
これを検出できるでしょう。