Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    type-namepublic

    type-name

    Just a reasonable typeof

    Build Status NPM version Dependency Status License

    Sauce Test Status

    DESCRIPTION

    typeName function returns reasonable type name for input value.

    description input result
    null literal null 'null'
    undefined value undefined 'undefined'
    string literal 'foo' 'string'
    number literal 5 'number'
    boolean literal false 'boolean'
    regexp literal (Android 4.1+) /^not/ 'RegExp'
    array literal ['foo', 4] 'Array'
    object literal {name: 'bar'} 'Object' (be careful!)
    function expression function () {} 'function'
    String object new String('foo') 'String'
    Number object new Number('3') 'Number'
    Boolean object new Boolean('1') 'Boolean'
    Date object new Date() 'Date'
    RegExp object (Android 4.1+) new RegExp('^not', 'g') 'RegExp'
    Array object new Array() 'Array'
    Object object new Object() 'Object'
    Function object new Function('x', 'y', 'return x + y') 'function' (be careful!)
    Error object new Error('error!') 'Error'
    TypeError object new TypeError('type error!') 'TypeError'
    NaN NaN 'number'
    Infinity Infinity 'number'
    Math Math 'Math'
    JSON (IE8+) JSON 'JSON'
    arguments object (IE9+) (function(){ return arguments; })() 'Arguments'
    User-defined constructor new Person('alice', 5) 'Person'
    Anonymous constructor new AnonPerson('bob', 4) ''
    Named class new(class Foo { constructor() {} }) 'Foo'
    Anonymous class new(class { constructor() {} }) ''
    Symbol Symbol("FOO") 'symbol'
    Promise Promise.resolve(1) 'Promise'

    EXAMPLE

    var typeName = require('type-name');
    var assert = require('assert');
     
    assert(typeName(null) === 'null');
    assert(typeName(undefined) === 'undefined');
    assert(typeName('foo') === 'string');
    assert(typeName(5) === 'number');
    assert(typeName(false) === 'boolean');
    assert(typeName(/^not/) === 'RegExp');
    assert(typeName(['foo', 4]) === 'Array');
    assert(typeName({name: 'bar'}) === 'Object');
    assert(typeName(function () {}) === 'function');
    assert(typeName(new String('foo')) === 'String');
    assert(typeName(new Number('3')) === 'Number');
    assert(typeName(new Boolean('1')) === 'Boolean');
    assert(typeName(new Date()) === 'Date');
    assert(typeName(new RegExp('^not', 'g')) === 'RegExp');
    assert(typeName(new Array()) === 'Array');
    assert(typeName(new Object()) === 'Object');
    assert(typeName(new Function('x', 'y', 'return x + y')) === 'function');
    assert(typeName(new Error('error!')) === 'Error');
    assert(typeName(new TypeError('type error!')) === 'TypeError');
    assert(typeName(NaN) === 'number');
    assert(typeName(Infinity) === 'number');
    assert(typeName(Math) === 'Math');
    assert(typeName(JSON) === 'JSON'); // IE8+ 
    assert(typeName((function(){ return arguments; })()) === 'Arguments');  // IE9+ 
    assert(typeName(Symbol("FOO")) === 'symbol');
    assert(typeName(Promise.resolve(1)) === 'Promise');
     
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
     
    var AnonPerson = function(name, age) {
        this.name = name;
        this.age = age;
    };
     
    assert(typeName(new Person('alice', 5)) === 'Person');
    assert(typeName(new AnonPerson('bob', 4)) === '');
     
    assert(typeName(new(class Foo { constructor() {} })) === 'Foo');
    assert(typeName(new(class { constructor() {} })) === '');

    INSTALL

    via npm

    Install

    $ npm install --save type-name
    

    Use

    var typeName = require('type-name');
    console.log(typeName(anyVar));

    use type-name npm module on browser

    typeName function is exported

    <script type="text/javascript" src="./path/to/node_modules/type-name/build/type-name.js"></script>
    

    via bower

    Install

    $ bower install --save type-name
    

    Load (typeName function is exported)

    <script type="text/javascript" src="./path/to/bower_components/type-name/build/type-name.js"></script>
    

    Use

    console.log(typeName(anyVar));

    AUTHOR

    CONTRIBUTORS

    LICENSE

    Licensed under the MIT license.

    Keywords

    install

    npm i type-name

    Downloadsweekly downloads

    139,549

    version

    2.0.2

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar