errgo-ts
Version:
A lightweight error handling library inspired by Go and Rust.
31 lines (30 loc) • 721 B
JavaScript
/**
* Ensures an unknown value is an `Error` instance, converting it if needed.
*
* @param e - unknown value to treat as an error.
* @returns `e` unchanged if already an Error, otherwise converts `e` to an Error.
*
* @example
* } catch (e: unknown) {
* // err is guaranteed to be an Error instance
* const err = coerceError(e);
* }
*/
export function coerceError(e) {
if (e instanceof Error) {
return e;
}
return new Error(unknownToString(e), { cause: e });
}
function unknownToString(e) {
if (e === null)
return "null";
if (typeof e !== "object")
return String(e);
try {
return JSON.stringify(e);
}
catch {
return String(e);
}
}