mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-18 05:19:29 +08:00
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
// Error objects: construction, fields, toString — Node-exact by
|
|
// construction (the runtime implements ECMA Error.prototype.toString over
|
|
// the name/message fields; new Error() defaults message to "").
|
|
const plain = new Error("boom");
|
|
console.log(plain.message, plain.name, plain.toString());
|
|
|
|
const empty = new Error();
|
|
console.log(empty.message === "", empty.name, empty.toString());
|
|
|
|
const te = new TypeError("wrong type");
|
|
const re = new RangeError("out of range");
|
|
const se = new SyntaxError("bad syntax");
|
|
console.log(te.name, re.name, se.name);
|
|
console.log(te.toString(), re.toString(), se.toString());
|
|
|
|
// name and message are plain writable fields, like Node.
|
|
const named = new Error("msg");
|
|
named.name = "Custom";
|
|
console.log(named.toString());
|
|
named.name = "";
|
|
console.log(named.toString() === "msg");
|
|
named.message = "";
|
|
console.log(named.toString() === "");
|
|
|
|
// instanceof across the builtin hierarchy.
|
|
console.log(te instanceof TypeError, te instanceof Error, te instanceof RangeError);
|
|
console.log(plain instanceof Error, plain instanceof TypeError);
|
|
|
|
// Errors are ordinary values: params, returns, arrays of messages.
|
|
function describe(e: Error): string {
|
|
return e.toString();
|
|
}
|
|
console.log(describe(te), describe(plain));
|