type-fns
Version:
A set of types, type checks, and type guards for simpler, safer, and easier to read code.
34 lines • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createIsOfEnum = void 0;
const withAssure_1 = require("../wrappers/withAssure");
/**
* a generic fn that allows us to create type checks for enums. for example:
* ```ts
* // you have an enum
* enum Planet {
* ...
* VENUS = 'VENUS',
* EARTH = 'EARTH',
* MARS = 'MARS',
* ...
* }
*
* // define a type check for your enum
* const isPlanet = createIsOfEnum.assess(Planet);
*
* // use it to assess type for type guarded blocks
* if (!isPlanet.assess(potentialPlanet)) throw new Error('is not a planet');
*
* // use it to assure type for type guarded type casts
* const planet: Planet = isPlanet.assure(potentialPlanet)
* ```
*
* ref: https://stackoverflow.com/a/58278753/3068233
*/
const createIsOfEnum = (e) => {
const check = (token) => Object.values(e).includes(token);
return (0, withAssure_1.withAssure)(check);
};
exports.createIsOfEnum = createIsOfEnum;
//# sourceMappingURL=isOfEnum.js.map