identify-type
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Identify Type

Build Status codecov NPM Version

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

Package Sidebar

Install

npm i identify-type

Weekly Downloads

24

Version

1.0.1

License

MIT

Unpacked Size

17.8 kB

Total Files

7

Last publish

Collaborators

  • derekyo77