get-object-class
A more explicit improvement on typeof
Installation
$ npm i get-object-class --save
Usage
import goc from 'get-object-class';
const goc = require('get-object-class');
const goc = window.getObjectClass;
Implementation
const array = [];
const promise = Promise.resolve();
console.log(goc(array));
console.log(goc(promise));
Why do we need this?
Generally speaking, you can use the typeof operator to determine a number of object classes:
- boolean
- function
- number
- object
- string
- symbol
- undefined
However, this list is quite limited, and things can get confusing for other classes of objects:
console.log(typeof new Date());
console.log(typeof null);
This library rectifies that by giving you the specific object class for any object (if I missed one tell me, I'll add it):
- Arguments =>
arguments
- Array =>
array
- ArrayBuffer =>
arraybuffer
- Boolean =>
boolean
- DataView =>
dataview
- Date =>
date
- Error =>
error
- Float32Array =>
float32array
- Float64Array =>
float64array
- Function =>
function
- GeneratorFunction =>
generatorfunction
- global =>
global (specific to node)
- Int8Array =>
int8array
- Int16Array =>
int16array
- Int32Array =>
int32array
- JSON =>
json (tests the JSON object itself, not if the value is a valid JSON string)
- Map =>
map
- Math =>
math
- Null =>
null
- Number =>
number
- Object =>
object
- Promise =>
promise
- RegExp =>
regexp
- Set =>
set
- String =>
string
- Symbol =>
symbol
- Uint8Array =>
uint8array
- Uint8ClampedArray =>
uint8Clampedarray
- Uint16Array =>
uint16array
- Uint32Array =>
uint32array
- WeakMap =>
weakmap
- WeakSet =>
weakset
- Window =>
window (specific to browser)
Checker functions
get-object-class also provides a checker function for each object class, example:
const array = [];
const boolean = true;
console.log(goc.isArray(array));
console.log(goc.isBoolean(array));
Keep in mind that the name of the function is driven by the PascalCase names in the list above:
const regexp = /foo/;
console.log(goc.isRegExp(regexp));
console.log(goc.isFloat32Array(regexp));
console.log(goc.isJSON(regexp));
Development
Standard stuff, clone the repo and npm i to get the dependencies. npm scripts available:
build => builds the distributed JS with NODE_ENV=development and with sourcemaps
build-minified => builds the distributed JS with NODE_ENV=production and minified
compile-for-publish => runs the lint, test, transpile, build, and build-minified scripts
dev => runs the webpack dev server for the playground
lint => runs ESLint against files in the src folder
prepublish => if in publish, runs compile-for-publish
test => run ava with NODE_ENV=test
test:watch => runs test but with persistent watcher
transpile => runs Babel against files in src to files in lib