Unknown in Catch
JavaScriptはどんな値もthrowできるため、
TypeScriptはエラーの型宣言をサポートしていません。
// 歴史的には、上記は、catch句の`e`はデフォルトが
anyであることを意味していました。
したがって、`e`の任意のプロパティに自由にアクセスできます。
4.0では、catch句における型の割り当ての制限を緩め、
`any`と`unknown`の両方を許可するようにしました。
any型を付けた場合と同じふるまい:
try {
// ..
} catch (e) {}
try {
// ..
} catch (e) {
e.stack;
}
// unknown型を明示した場合のふるまい:
try {
// ..
} catch (e: unknown) {
// 型システムが、`e`がどんな型なのかを知るまで
// `e`を利用することはできません。詳細は以下を確認してください:
// example:unknown-and-never
e.stack;
if (e instanceof SyntaxError) {
e.stack;
}
}