Package Exports
- utils-type
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (utils-type) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
utils-type 
documentation - install - notes - todo
simple
var type = require('utils-type');
type(42); // -> { number: 42 }
type(NaN); // -> { nan: true }
type(null); // -> { null: true }
type(true); // -> { boolean: true }
type(false); // -> { boolean: true }
type(Infinity); // -> { infinity: Infinity }
type(undefined); // -> { undefined: true }
type('a string'); // -> { string: 'a string' }
type(/a regex/); // -> { object: /a regex/, regexp: /a regex/ } }
type(function(){ }); // -> { object: [Function], function: [Function] }
type({ type : 'toy' }); // -> { object: { type: 'toy' } }
type(new Date()); // -> { object: Mon Sep 08 2014 19:10:32, date: Mon Sep 08 2014 19:10:32 GMT+0200 (CEST) }
type(new Error()); // -> { object: [Error], error: [Error] }
type(new Stream());
// -> {
// object: { domain: null, _events: {}, _maxListeners: 10 },
// stream: { domain: null, _events: {}, _maxListeners: 10 },
// eventemitter: { domain: null, _events: {}, _maxListeners: 10 }
// }composition
The function returns an object. The type matched by that type returns itself.
type(1).number // -> 1 (that is truthy)
type([1,2,3]).array // -> [1,2,3] (truthy)
type(type([1,2,3]).array[1]).number // -> 1 (truthy)comprehensive
type(-1).number // -> -1
type(-1).integer // -> -1
type(NaN).nan // -> true
type(0.4).float // -> 0.4
type(Infinity).infinity // -> Infinity
type(new EventEmitter())
// -> {
// object: { domain: null, _events: {}, _maxListeners: 10 },
// eventemitter: { domain: null, _events: {}, _maxListeners: 10 }
// }falsy values maintain the value if it makes sense
type(0).number // -> true
type(0).integer // -> 0
type('').string // -> ' '
type(null).null // -> true
type(NaN).number // -> undefined
type(false).boolean // -> true
type(undefined).undefined // -> trueWhy:
NaNis not a numberfalseis a boolean, returning it will be misleading0is a number, but forintegerits value its maintainedthe empty stringis changed to an space so is truthy and operations can be made on itnullandundefinedare self explanatory
--- ### Documentation
The module.exports a function
var type = require('utils-type');that takes one argument.
type
function type(value)arguments
valuetype any, from where types will be obtained
returns
- object with as many properties as types the argument has
var type = require('utils-type');
var items = type([1,2,3]);
Object.keys(items); // =>
// ['object', 'array']install
With npm
$ npm install utils-typetest
$ npm testnotes
The module uses Objec.create in order to not produce false positives when checking properties on the returned object. So it basically needs support for object create. Polyfill it, for more info:
http://kangax.github.io/compat-table/es5/
todo
- Include browser tests