JSPM

  • Created
  • Published
  • Downloads 115
  • Score
    100M100P100Q67394F
  • License MIT

robust type checking for js

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 buildNPM version

documentation - install - 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: true }
type( undefined );       // -> { undefined: true }
type( 'a string');       // -> { string: 'a string' }
type( /a regex/ );       // -> { object: true, regexp: /a regex/ } }
type( function(){ } );   // -> { object: true, function: [Function] }
type({ type : 'toy' });  // -> { object: { type: 'toy' } }
type( new Date() );      // -> { object: true,  date: Mon Sep 08 2014 19:10:32 GMT+0200 (CEST) }
type( new Error() );     // -> { object: true, error: [Error] }

// and more!
type( new Stream() );
// -> { object: true, eventemitter: true, stream: { domain: null, _events: {}, _maxListeners: 10 } }
type( new EventEmitter() );
// -> { object: true, eventemitter: { domain: null, _events: {}, _maxListeners: 10 } }

composable

The function returns an object. The type mached by what type returns itself. That is:

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)

maintain the type

Falsy values are made true when it makes sense based on their use-case

var arr = [false, 0, NaN, ''];
type(type(arr).array[0]).boolean // -> true
type(type(arr).array[1]).number  // -> 0
type(type(arr).array[2]).number  // -> undefined
type(type(arr).array[3]).string  // -> ' '
  • NaN is not a number
  • false is a boolean, returning it will be misleading
  • 0 is a number yes, but if is changed to true you can't add to it after the function returns
  • the empty string is changed to an space so is truthy and operations can be made on it

install

With npm

$ npm install utils-type

test

$ npm test

todo

  • Include browser tests

license

LICENSE