JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q38527F
  • License ISC

A very simple "typeof" detection

Package Exports

  • wots

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 (wots) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

why?

The library was written as a simple coding exercise, but then appeared useful to share 😉

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 😉