@typed-firestore/server
Version:
Elegant, typed abstractions for Firestore in server environments
34 lines (28 loc) • 855 B
text/typescript
/**
* Copied from:
* https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript
*/
export function getErrorMessage(error: unknown): string {
return toErrorWithMessage(error).message;
}
type ErrorWithMessage = {
message: string;
};
function isErrorWithMessage(error: unknown): error is ErrorWithMessage {
return (
typeof error === "object" &&
error !== null &&
"message" in error &&
typeof (error as ErrorWithMessage).message === "string"
);
}
function toErrorWithMessage(maybeError: unknown): ErrorWithMessage {
if (isErrorWithMessage(maybeError)) return maybeError;
try {
return new Error(JSON.stringify(maybeError));
} catch {
// fallback in case there's an error stringifying the maybeError
// like with circular references for example.
return new Error(String(maybeError));
}
}