// doc: https://devblogs.microsoft.com/typescript/announcing-typescript-4-0/#unknown-on-catch
try { /* ... */ }
catch (e: unknown) { // <-- note `e` has explicit `unknown` type
e.message // errors
if (typeof e === "string") {
e.toUpperCase() // works, `e` narrowed to string
} else if (e instanceof Error) {
e.message // works, `e` narrowed to Error
}
// ... handle other error types
}
// Typescript 4.4 added the ability to make unknown the default on catch variables using the useUnknownInCatchVariables flag.