typeutil

Typify your JavaScript functions.

typeutil

Typify your JavaScript functions.

npm install typeutil --save
var typeutil = require('typeutil');
<script src='require.js'></script>
 
<script>
    require([
        'build/typeutil.min.js'
    ], function (typeutil) {
        // ... 
    });
</script> 
<script src='build/typeutil.min.js'></script>

A function signature consists of zero, one, or more parameters and a return-parameter.

([<parameter>, ...]) => <return-parameter>
TypeAccepted value
anyany object and any primitive except null and undefined
any?any object and any primitive
booleana boolean primitive
boolean?a boolean primitive, null and undefined
numbera number primitive
number?a number primitive, null and undefined
objectany object
object?any object, null and undefined
stringa string primitive
string?a string primitive, null and undefined
Object classAccepted value
Argumentsan arguments object
Arguments?an arguments object, null and undefined
Arrayan array object
Array?an array object, null and undefined
Booleana boolean object
Boolean?a boolean object, null and undefined
Datea date object
Date?a date object, null and undefined
Erroran error object
Error?an error object, null and undefined
Functiona function object
Function?a function object, null and undefined
Globalthe Global/Window object
Global?the Global/Window object, null and undefined
JSONthe JSON object
JSON?the JSON object, null and undefined
Maththe Math object
Math?the Math object, null and undefined
Numbera number object
Number?a number object, null and undefined
Objecta plain object
Object?a plain object, null and undefined
RegExpa regexp object
RegExp?a regexp object, null and undefined
Stringa string object
String?a string object, null and undefined
TypeAccepted value
voidnull and undefined
var log = typeutil.typify(function (message) {
    // ... 
}, '(string) => void');
 
log('');            // passes arguments [''] 
 
log();              // throws TypeError: (!>string) => void 
log({});            // throws TypeError: (!>string) => void 
log({}, '');        // throws TypeError: (!>string) => void 
log({}, {});        // throws TypeError: (!>string) => void 
log({}, null);      // throws TypeError: (!>string) => void 
log({}, undefined); // throws TypeError: (!>string) => void 
log(null);          // throws TypeError: (!>string) => void 
log(undefined);     // throws TypeError: (!>string) => void 
 
log('', '');        // throws TypeError: (string, !>...) => void 
log('', {});        // throws TypeError: (string, !>...) => void 
log('', null);      // throws TypeError: (string, !>...) => void 
log('', undefined); // throws TypeError: (string, !>...) => void 
var assert = typeutil.typify(function (expressionmessage) {
    // ... 
}, '(any?, string?) => void');
 
assert();               // passes arguments [null, null] 
assert('');             // passes arguments ['', null] 
assert('', '');         // passes arguments ['', ''] 
assert('', null);       // passes arguments ['', null] 
assert('', undefined);  // passes arguments ['', undefined] 
assert({});             // passes arguments [{}, null] 
assert(null);           // passes arguments [null, null] 
assert(undefined);      // passes arguments [undefined, null] 
 
assert('', {});         // throws TypeError: (any?, string?, !>...) => void 
var readFile = typeutil.typify(function (filenameoptionscallback) {
    // ... 
}, '(string, Object?, Function) => void');
 
readFile('', {}, function () {});   // passes arguments ['', {}, function () {}] 
readFile('', function () {});       // passes arguments ['', null, function () {}] 

Conventional:

var readFile = function (filenameoptionscallback) {
    if (typeof options === 'function') {
        callback = options;
        options = null;
    }
 
    // ... 
};
typeutil.getTypeOf();               // returns 'undefined' 
typeutil.getTypeOf(false);          // returns 'boolean' 
typeutil.getTypeOf(null);           // returns 'null' 
typeutil.getTypeOf(0);              // returns 'number' 
typeutil.getTypeOf('');             // returns 'string' 
typeutil.getTypeOf(undefined);      // returns 'undefined' 
 
typeutil.getTypeOf(arguments);      // returns 'object' 
typeutil.getTypeOf([]);             // returns 'object' 
typeutil.getTypeOf(new Boolean());  // returns 'object' 
typeutil.getTypeOf(new Date());     // returns 'object' 
typeutil.getTypeOf(new Error());    // returns 'object' 
typeutil.getTypeOf(function () {}); // returns 'object' 
typeutil.getTypeOf(global);         // returns 'object' 
typeutil.getTypeOf(JSON);           // returns 'object' 
typeutil.getTypeOf(Math);           // returns 'object' 
typeutil.getTypeOf(new Number());   // returns 'object' 
typeutil.getTypeOf({});             // returns 'object' 
typeutil.getTypeOf(new RegExp());   // returns 'object' 
typeutil.getTypeOf(new String());   // returns 'object' 
typeutil.getClassOf(arguments);         // returns 'Arguments' 
typeutil.getClassOf([]);                // returns 'Array' 
typeutil.getClassOf(new Boolean());     // returns 'Boolean' 
typeutil.getClassOf(new Date());        // returns 'Date' 
typeutil.getClassOf(new Error());       // returns 'Error' 
typeutil.getClassOf(function () {});    // returns 'Function' 
typeutil.getClassOf(global);            // returns 'Global' 
typeutil.getClassOf(JSON);              // returns 'JSON' 
typeutil.getClassOf(Math);              // returns 'Math' 
typeutil.getClassOf(new Number());      // returns 'Number' 
typeutil.getClassOf({});                // returns 'Object' 
typeutil.getClassOf(new RegExp());      // returns 'RegExp' 
typeutil.getClassOf(new String());      // returns 'String' 
 
typeutil.getClassOf();                  // returns null 
typeutil.getClassOf(false);             // returns null 
typeutil.getClassOf(null);              // returns null 
typeutil.getClassOf(0);                 // returns null 
typeutil.getClassOf('');                // returns null 
typeutil.getClassOf(undefined);         // returns null 
typeutil.is();                  // returns false 
typeutil.is(null);              // returns false 
typeutil.is(undefined);         // returns false 
 
typeutil.is(false);             // returns true 
typeutil.is(true);              // returns true 
typeutil.is(0);                 // returns true 
typeutil.is(1);                 // returns true 
typeutil.is('');                // returns true 
 
typeutil.is(arguments);         // returns true 
typeutil.is([]);                // returns true 
typeutil.is(new Boolean());     // returns true 
typeutil.is(new Date());        // returns true 
typeutil.is(new Error());       // returns true 
typeutil.is(function () {});    // returns true 
typeutil.is(global);            // returns true 
typeutil.is(JSON);              // returns true 
typeutil.is(Math);              // returns true 
typeutil.is(new Number());      // returns true 
typeutil.is({});                // returns true 
typeutil.is(new RegExp());      // returns true 
typeutil.is(new String());      // returns true 
typeutil.isInteger(-2147483648);    // returns true 
typeutil.isInteger(-1);             // returns true 
typeutil.isInteger(-0);             // returns true 
typeutil.isInteger(0);              // returns true 
typeutil.isInteger(1);              // returns true 
typeutil.isInteger(2147483647);     // returns true 
 
typeutil.isInteger(-Infinity);      // returns false 
typeutil.isInteger(-2147483649);    // returns false 
typeutil.isInteger(-1.1);           // returns false 
typeutil.isInteger(-0.1);           // returns false 
typeutil.isInteger(0.1);            // returns false 
typeutil.isInteger(1.1);            // returns false 
typeutil.isInteger(2147483648);     // returns false 
typeutil.isInteger(Infinity);       // returns false 
typeutil.isInteger(NaN);            // returns false 
 
typeutil.isInteger();               // returns false 
typeutil.isInteger(false);          // returns false 
typeutil.isInteger(null);           // returns false 
typeutil.isInteger('');             // returns false 
typeutil.isInteger(undefined);      // returns false 
 
typeutil.isInteger(arguments);      // returns false 
typeutil.isInteger([]);             // returns false 
typeutil.isInteger(new Boolean());  // returns false 
typeutil.isInteger(new Date());     // returns false 
typeutil.isInteger(new Error());    // returns false 
typeutil.isInteger(function () {}); // returns false 
typeutil.isInteger(global);         // returns false 
typeutil.isInteger(JSON);           // returns false 
typeutil.isInteger(Math);           // returns false 
typeutil.isInteger(new Number());   // returns false 
typeutil.isInteger({});             // returns false 
typeutil.isInteger(new RegExp());   // returns false 
typeutil.isInteger(new String());   // returns false 

To run the test suite first install the development dependencies:

npm install

then run the tests:

npm test

Licensed under the MIT license.