Simple, chainable runtime type-checking for JavaScript
npm install --save typsy
// myfile.js
// ES module
import { typeCheck } from "typsy";
// Node.js
const typeCheck = require("typsy").typeCheck;
const x = "This is a string";
typeCheck(x).isString().yields(); // true
typeCheck(x).isInteger().yields(); // false
typeCheck(x).isString().or().isInteger().yields(); // true
yields()
returns whether the check is true or not. It must be called at the end to return true
or false
isTrue();
isFalse();
isInteger();
isString();
isEmptyString();
isAllWhiteSpace();
isBoolean();
isFloat();
isObject();
isNull();
isUndefined();
isArray();
isEmptyArray();
isFunction();
isDate();
isSet();
isWeakSet();
isMap();
isWeakMap();
isFloat();
isObject();
isEmptyObject();
isNaN();
isCollection();
isBigInt();
isSymbol();
isHTML();
and();
or();
unless();
pass any built-in check false
typeCheck(21).isArray(false).yields(); // returns true;
Use the check
function to insert a custom check function.
function isNegative(value){
return value < 0;
}
typeCheck(12).check(isNegative).yields(); // false
typeCheck(-12).check(isNegative).yields(); // true
typeCheck(12).isInteger().and().check(isNegative).yields(); // false
typeCheck(-12).isInteger().and().check(isNegative).yields(); // true
typeCheck(12).isInteger().or().check(isNegative).yields(); // true
yields
accepts a truth-handler and false-handler function respectively
Both callbacks use the typeChecked value as its argument.
This is especially useful for logging.
function myTrueCallback(){};
function myFalseCallback(){};
typeCheck(21).isInteger().yields(myTrueCallback, myFalseCallback); // returns true & myTrueCallback is fired
typeCheck("toot").isInteger().yields(myTrueCallback, myFalseCallback); // returns false & myFalseCallback is fired
with the yields
callback you can even shorten your code:
// instead of
if(typeCheck(21).isInteger().yields()){
handleTrue(21);
} else {
handleFalse(21)
}
// you can use this!
typeCheck(21).isInteger().yields(handleTrue, handleFalse);
myFunction(typeCheck(myVariable).isInteger().or().isString().yields()? myVariable : 1);