identify-type v1.0.1
Identify Type
identify-type is a tiny JavaScript library designed to quickly identify standard types without needing to reference correct syntax.
Key Features:
🌲 Support ES6 Tree-Shaking
✈️ Bundled TypeScript Definitions
🫙 Zero Dependencies
Rationale
There are many possible pitfalls when identifying a type in JavaScript, even when using TypeScript:
function square(x: number): number {
if (typeof x !== "number") {
throw new Error("Argument 'x' must be a number");
}
return x * x;
}
square(2); // 4
square(NaN); // NaN (Bren, what does "NaN" mean in our financial report?)Use identify-type to make working with JavaScript types more enjoyable.
typeof null; // "object"
typeof []; // "object"Installation
npm i identify-typeimport { isNumber, isObject } from "identify-type";Node.js
See Node.js docs for importing ES modules like this one.
Documentation
All functions accept an argument of any type and return a boolean indicating the answer to the query. If using TypeScript, types are also narrowed using type predicates.
isNumber
Returns true for all real numbers, naturally excluding NaN and Infinity.
isNumber(3); // true
isNumber(-27.5); // true
isNumber(NaN); // false
isNumber(Infinity); // falseisObject
Since almost everything in JavaScript is an object, this method only returns true for plain objects.
isObject({ foo: "bar" }); // true
isObject(Object.create({})); // true
isObject(Object.create(null)); // true
isObject(null); // false
isObject([]); // false
isObject(new Date()); // falseisArray
isArray([]); // true
isArray(new Array(1, 2, 3)); // true
isArray(new Uint8Array(32)); // false
isArray("[]"); // falseisNil
Nil is an exported type that means null or undefined.
isNil(null); // true
isNil(undefined); // true
isNil(0); // falseisError
Returns true only for valid error classes.
try {
throw new Error("something went wrong");
} catch (e) {
isError(e); // true
}
try {
throw "something went wrong";
} catch (e) {
isError(e); // false
}isSymbol
isSymbol(new Symbol()); // true
isSymbol(Symbol.iterator); // true
isSymbol("☮️"); // falseisBoolean
isBoolean(true); // true
isBoolean(false); // true
isBoolean(0); // false
isBoolean("true"); // false
isBoolean(null); // falseisBigInt
isBigInt(9007199254740991n); // true
isBigInt(BigInt("980928340982309482093480298349082934")); // true
isBigInt(9001); // falseisString
isString("foo"); // trueisPromise
isPromise(new Promise(() => {})); // trueisFunction
isFunction(() => {}); // true
isFunction(function* () {}); // true