45171c2697
Mirror / push (push) Successful in 4s
Test / lint (pull_request) Successful in 21s
Test / test (18) (pull_request) Failing after 18s
Test / test (20) (pull_request) Successful in 22s
Test / test (22) (pull_request) Successful in 19s
Test / test (24) (pull_request) Successful in 19s
Test / test (26) (pull_request) Successful in 19s
18 lines
627 B
TypeScript
18 lines
627 B
TypeScript
/** Whatever was thrown or rejected, as an Error. `String()` throws on some values; this cannot. */
|
|
export function errorFrom(reason: unknown): Error {
|
|
if (reason instanceof Error) return reason;
|
|
|
|
try {
|
|
return new Error(String(reason));
|
|
} catch {
|
|
return new Error('A thrown value that cannot be converted to a string');
|
|
}
|
|
}
|
|
|
|
const printable: readonly string[] = ['boolean', 'number', 'string'];
|
|
|
|
/** String() throws on a null-prototype object, so anything but these is named by its type. */
|
|
export function namedValue(value: unknown): string {
|
|
return printable.includes(typeof value) ? String(value) : typeof value;
|
|
}
|