identify-type
v1.0.1
Published
Quickly identify standard JavaScript types
Downloads
33
Maintainers
Readme
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-type
import { 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); // false
isObject
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()); // false
isArray
isArray([]); // true
isArray(new Array(1, 2, 3)); // true
isArray(new Uint8Array(32)); // false
isArray("[]"); // false
isNil
Nil
is an exported type that means null
or undefined
.
isNil(null); // true
isNil(undefined); // true
isNil(0); // false
isError
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("☮️"); // false
isBoolean
isBoolean(true); // true
isBoolean(false); // true
isBoolean(0); // false
isBoolean("true"); // false
isBoolean(null); // false
isBigInt
isBigInt(9007199254740991n); // true
isBigInt(BigInt("980928340982309482093480298349082934")); // true
isBigInt(9001); // false
isString
isString("foo"); // true
isPromise
isPromise(new Promise(() => {})); // true
isFunction
isFunction(() => {}); // true
isFunction(function* () {}); // true