Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

tamb/typsy

Open more actions menu

Repository files navigation

typsy

Simple, chainable runtime type-checking for JavaScript

install

npm install --save typsy

import

// myfile.js
// ES module
import { typeCheck } from "typsy";

// Node.js
const typeCheck = require("typsy").typeCheck;

use

const x = "This is a string";

typeCheck(x).isString().yields(); // true

typeCheck(x).isInteger().yields(); // false

typeCheck(x).isString().or().isInteger().yields(); // true

the almighty yields

yields() returns whether the check is true or not. It must be called at the end to return true or false

checks

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();

methods

and();
or();
unless();

not modifier

pass any built-in check false

typeCheck(21).isArray(false).yields(); // returns true;

custom checks

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 callbacks

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);

neat recipes

myFunction(typeCheck(myVariable).isInteger().or().isString().yields()? myVariable : 1);

About

Simple, chainable type-checking for JavaScript

Resources

License

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.