type ErrorWithMessageType = { message: string } function isErrorWithMessage(error: unknown): boolean { return ( typeof error === 'object' && error !== null && 'message' in error && typeof (error as Record)['message'] === 'string' ) } function toErrorWithMessage(maybeError: unknown): ErrorWithMessageType { if (isErrorWithMessage(maybeError)) { return maybeError as ErrorWithMessageType } try { return new Error(JSON.stringify(maybeError)) } catch { // Fallback in case there's an error stringifying the // maybeError (for example, with circular references). return new Error(String(maybeError)) } } export function getErrorMessage(error: unknown) { return toErrorWithMessage(error).message }