// 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.
class MyError extends Error {
constructor(message: string) {
super(message);
Object.setPrototypeOf(this, MyError.prototype)
}
}
const myFunction = () => {
throw new MyError('some reason');
}
try {
myFunction();
} catch (error) {
if (error instanceof MyError) {
// Handle MyError....
}
}