to-type
v1.1.1
Published
The way typeof should be
Downloads
21
Maintainers
Readme
to-type
The way typeof should be
A JavaScript implementation of angus-c's Fixing the JavaScript typeof operator.
Install
Node
npm install --save to-type
Web
<script src="https://rawgit.com/dawsonbotsford/to-type/master/bundle.js"></script>
Alternatively, you can install the npm module and reference the bundle within node_modules
<script src="<path to node_modules>/to-type/bundle.js"></script>
Usage
// Remove this require line if you're using the web bundle (it's already bundled as "to-type")
const to-type = require('to-type');
toType([1, 2, 3]);
//=> 'array'
toType(/a-z/);
//=> 'regexp'
toType(new Number(4));
//=> 'number'
toType(new String('abc'));
//=> 'string'
About
JavaScript's typeof
function sucks. It has returned vague values since 1997 and always will be due to backwards compatibility. It seems like nearly every call returns object
. Don't believe me?
typeof {a: 4};
//=> 'object'
typeof [1, 2, 3];
//=> 'object'
typeof new ReferenceError;
//=> 'object'
typeof new Date;
//=> 'object'
typeof /a-z/;
//=> 'object'
typeof JSON;
//=> 'object'
typeof new Number(4);
//=> 'object'
typeof new String('abc');
//=> 'object'
Did I hear you say that was not enough proof?
typeof new Boolean(true);
//=> 'object'
Wait, you're still not convinced?
typeof Math;
//=> 'object'
to-type
fixes these vague outputs by returning the types you expect to see.
API
toType(target)
target
Type: all types
returns
Type: string
Description: The return value is always lowercased.
More Examples
toType({a: 4});
//=> 'object'
toType(new Date());
//=> 'date'
toType(Math);
//=>'math'
toType(JSON);
//=> 'json'
toType(new Number(4));
//=> 'number'
toType(new String('abc'));
//=> 'string'
toType(new Boolean(true));
//=> 'boolean'
toType(new ReferenceError());
//=> 'error'
//es2015 and newer
toType(Promise);
//=> 'function'
toType(Symbol());
//=> 'symbol'
License
MIT © Dawson Botsford
If you like this, star it. If you want to follow me, follow me.