wots
v0.3.2
Published
A very simple "typeof" detection
Downloads
15
Maintainers
Readme
why?
The library was written as a simple coding exercise, but then appeared useful to share :wink:
how?
npm install --save wots
and then
// use as ES6 module
import wots from 'wots';
// use in NodeJs
var wots = require('wots');
// use as global variable via UnPKG
<script src="https://unpkg.com/wots"></script>
// ... then ...
if (wots(myNotAlwaysNumericVariable) === 'NaN') {
// do some stuff
// e.g. console.log('I cannot count on it')
} else if (wots(myNotAlwaysNumericVariable) === 'Infinity') {
// do some other stuff
// e.g. console.log('Please do not force me to use this value in a loop!')
}
what?
wots()
function returns reasonable type names for tested values:
| description | input | result |
| :------------------ | :---------------------------------- |:------------- |
| null | null
| 'null'
|
| undefined | undefined
| 'undefined'
|
| strings | 'foo'
| 'string'
|
| | ''
| 'string'
|
| | ['Hello', 'world!'].join(' ')
| 'string'
|
| | new String()
| 'string'
|
| numbers | 5
| 'number'
|
| | parseInt(42)
| 'number'
|
| | new Number('3')
| 'number'
|
| | NaN
| 'NaN'
|
| | Infinity
| 'Infinity'
|
| | 1 / -0
| 'Infinity'
|
| boolean values | false
| 'boolean'
|
| | !!nonEmptyVariable
| 'boolean'
|
| |new Boolean('0')
| 'boolean'
|
| regular expressions | /^test$/g
| 'regexp'
|
| | new RegExp('needle', 'i')
| 'regexp'
|
| arrays | ['foo', 'bar', 'baz']
| 'array'
|
| | new Array(10)
| 'array'
|
| objects | { foo: 'bar'}
| 'object'
|
| | {}
| 'object'
|
| | new Object()
| 'object'
|
| | Object.create(null)
| 'object
|
| functions | function () {}
| 'function'
|
| | new Function('return null')
| 'function'
|
| date objects | new Date()
| 'date'
|
| errors | new Error('error!')
| 'error'
|
| | new TypeError('type error!')
| 'error'
|
| arguments objects | (function(){return arguments;})()
| 'arguments'
|
| class constructors | new MyClass()
| 'myclass'
|
| | new Buffer()
| 'buffer'
|
| | new XMLHttpRequest()
| 'xmlhttprequest'
|
| promises | new Promise(function() {})
| 'promise'
|
| | Promise.resolve('data')
| 'promise'
|
| | Promise.reject(new Error('Oop!'))
| 'promise'
|
Note: for more examples see test file
Since version 0.2.0 the library also exposes static methods listed below:
wots.isNull()
wots.isUndefined()
wots.isString()
wots.isNumber()
wots.isNaN()
wots.isInfinity()
wots.isBoolean()
wots.isRegExp()
wots.isArray()
wots.isObject()
wots.isFunction()
wots.isDate()
wots.isError()
wots.isArguments()
wots.isPromise()
the name
wots
basically stands for what is
but is shorter :wink: