プロジェクトでエラーが発生しました。try、catchおよびfinallyを使用してこれを処理する必要があります。これはJavaScriptで使用できますが、TypeScriptでは使用できません。 TypeScript catchステートメントの引数としてExceptionを指定すると、これは受け入れられませんか?これがコードです。
private handling(argument: string): string {
try {
result= this.markLibrary(argument);
}
catch(e:Exception){
result = e.Message;
}
return result;
}
ここに例外メッセージが必要ですが、取得できません。そして、私は以下のエラーを受け取りました。
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
インスタンスである必要はないので、この仮定に注意してください
多分no-unsafe-any
を使ったtslintはこれを捕まえるのに役立つでしょう。
まず、result
変数を定義する必要があります
let result;
第二に、eのタイプを定義することはできません-メッセージが言ったように、eのタイプを強制したい場合は、
catch(e){
result = (e as Exception).Message;
}
または
catch(e){
result = (<Exception>e).Message;
}
それ以外の場合、eのタイプはany
になるため、引き続き機能します。
catch (e) {
result = e.Message;
}