globalThis.assertOrThrow

# kai zhu (5 years ago)

having a universal assert function (similar to nodejs' assert builtin) might be useful. it could be name "assertOrThrow" for web-compat.

this would simplify writing common-case "throwaway" error-handling behavior in both browsers and nodejs:

// naive polyfill
globalThis.assertOrThrow = globalThis.assertOrThrow || function (passed,
message) {
/*
 * this function will throw error <message> if <passed> is falsy
 */
    if (passed) {
        return;
    }
    throw (
        typeof message === "object" && message
        ? message
        : new Error(message)
    }
};

localforage.setItem("foo", "bar", function (err, data) {
    // validate no err occurred
    // this one-line statement makes writing test-coverage less tedious
    assertOrThrow(!err, err);
    ...
});
# Michael Haufe (5 years ago)

esdiscuss.org/topic/native-assertions

From: es-discuss <es-discuss-bounces at mozilla.org> On Behalf Of kai zhu

Sent: Saturday, August 31, 2019 2:22 PM To: es-discuss <es-discuss at mozilla.org>

Subject: globalThis.assertOrThrow

having a universal assert function (similar to nodejs' assert builtin) might be useful. it could be name "assertOrThrow" for web-compat.

this would simplify writing common-case "throwaway" error-handling behavior in both browsers and nodejs:

// naive polyfill
globalThis.assertOrThrow = globalThis.assertOrThrow || function (passed, message) {
/*
 * this function will throw error <message> if <passed> is falsy
 */
    if (passed) {
        return;
    }
    throw (
        typeof message === "object" && message
        ? message
        : new Error(message)
    }
};

localforage.setItem("foo", "bar", function (err, data) {
    // validate no err occurred
    // this one-line statement makes writing test-coverage less tedious
    assertOrThrow(!err, err);
    ...
});