typeutil
Typify your JavaScript functions.
Installation
npm install typeutil --save
Usage
Node.js
var typeutil = ;
Browser (RequireJS)
Browser (Global/Window)
API
typeutil.typify(callback: Function, signature: string) => Function
A function signature consists of zero, one, or more parameters and a return-parameter.
([<parameter>, ...]) => <return-parameter>
Parameter and return-parameter types
Type | Accepted value |
---|---|
any | any object and any primitive except null and undefined |
any? | any object and any primitive |
boolean | a boolean primitive |
boolean? | a boolean primitive, null and undefined |
number | a number primitive |
number? | a number primitive, null and undefined |
object | any object |
object? | any object, null and undefined |
string | a string primitive |
string? | a string primitive, null and undefined |
Parameter and return-parameter object classes
Object class | Accepted value |
---|---|
Arguments | an arguments object |
Arguments? | an arguments object, null and undefined |
Array | an array object |
Array? | an array object, null and undefined |
Boolean | a boolean object |
Boolean? | a boolean object, null and undefined |
Date | a date object |
Date? | a date object, null and undefined |
Error | an error object |
Error? | an error object, null and undefined |
Function | a function object |
Function? | a function object, null and undefined |
Global | the Global/Window object |
Global? | the Global/Window object, null and undefined |
JSON | the JSON object |
JSON? | the JSON object, null and undefined |
Math | the Math object |
Math? | the Math object, null and undefined |
Number | a number object |
Number? | a number object, null and undefined |
Object | a plain object |
Object? | a plain object, null and undefined |
RegExp | a regexp object |
RegExp? | a regexp object, null and undefined |
String | a string object |
String? | a string object, null and undefined |
Special return-parameter type
Type | Accepted value |
---|---|
void | null and undefined |
Example: log(message: string) => void
var log = typeutil; ; // passes arguments [''] ; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void; // throws TypeError: (!>string) => void ; // throws TypeError: (string, !>...) => void; // throws TypeError: (string, !>...) => void; // throws TypeError: (string, !>...) => void; // throws TypeError: (string, !>...) => void
Example: assert(expression: any?, message: string?) => void
var assert = typeutil; ; // passes arguments [null, null]; // passes arguments ['', null]; // passes arguments ['', '']; // passes arguments ['', null]; // passes arguments ['', undefined]; // passes arguments [{}, null]; // passes arguments [null, null]; // passes arguments [undefined, null] ; // throws TypeError: (any?, string?, !>...) => void
Handling of optional arguments
var readFile = typeutil; ; // passes arguments ['', {}, function () {}]; // passes arguments ['', null, function () {}]
Conventional:
var { if typeof options === 'function' callback = options; options = null; // ...};
typeutil.getTypeOf(value: any?) => string
typeutil; // returns 'undefined'typeutil; // returns 'boolean'typeutil; // returns 'null'typeutil; // returns 'number'typeutil; // returns 'string'typeutil; // returns 'undefined' typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'typeutil; // returns 'object'
typeutil.getClassOf(object: any?) => string?
typeutil; // returns 'Arguments'typeutil; // returns 'Array'typeutil; // returns 'Boolean'typeutil; // returns 'Date'typeutil; // returns 'Error'typeutil; // returns 'Function'typeutil; // returns 'Global'typeutil; // returns 'JSON'typeutil; // returns 'Math'typeutil; // returns 'Number'typeutil; // returns 'Object'typeutil; // returns 'RegExp'typeutil; // returns 'String' typeutil; // returns nulltypeutil; // returns nulltypeutil; // returns nulltypeutil; // returns nulltypeutil; // returns nulltypeutil; // returns null
typeutil.is(value: any?) => boolean
typeutil; // returns falsetypeutil; // returns falsetypeutil; // returns false typeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns true typeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns true
typeutil.isInteger(number: any?) => boolean
typeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns truetypeutil; // returns true typeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns false typeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns false typeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns falsetypeutil; // returns false
Running the tests
To run the test suite first install the development dependencies:
npm install
then run the tests:
npm test
License
Licensed under the MIT license.