Skip to content

dephub-js/is

Repository files navigation

@dephub/is 🧩

A lightweight runtime type guard library for JavaScript & TypeScript

NPM version ESM-only


Features ✨

  • πŸ” Type Guards: Precise type checking for primitives, objects, arrays, and more.
  • πŸ›‘οΈ TypeScript Support: Fully typed with TypeScript for robust type narrowing.
  • ⚑ Lightweight: Minimal footprint with no external dependencies.
  • 🌐 Cross-Platform: Compatible with Node and browsers.
  • 🧩 Comprehensive: Supports complex types like Promises, Maps, Sets, and Response objects.

Installation πŸ“¦

# npm
npm install @dephub/is

# pnpm
pnpm add @dephub/is

# yarn
yarn add @dephub/is

# bun
bun add @dephub/is

Usage 🎯

API 🧩

@dephub/is provides a collection of type guard functions to check the type of values at runtime, along with utility functions for common checks. Below are some examples:

Primitive Type Checks

import { is } from '@dephub/is';

console.log(is.bigint(10n)); // true
console.log(is.boolean(true)); // true
console.log(is.nan(NaN)); // true
console.log(is.null(null)); // true
console.log(is.number(42)); // true
console.log(is.number(Infinity)); // false
console.log(is.number(NaN)); // false
console.log(is.string('hola')); // true
console.log(is.symbol(Symbol('x'))); // true
console.log(is.undefined(undefined)); // true

Advanced Type Checks

import { is } from '@dephub/is';

console.log(is.array([1, 2, 3])); // true
console.log(is.blob(new Blob(['hola']))); // true
console.log(is.arrayBuffer(new ArrayBuffer(16))); // true
console.log(is.dataView(new DataView(new ArrayBuffer(8)))); // true
console.log(is.date(new Date())); // true
console.log(is.error(new Error('boom'))); // true
console.log(is.file(new File(['abc'], 'x.txt'))); // true
console.log(is.formData(new FormData())); // true
console.log(is.function(() => 'hey')); // true
console.log(is.headers(new Headers({ 'x-test': '1' }))); // true
console.log(is.map(new Map([['a', 1]]))); // true
console.log(is.object(new Date())); // true
console.log(is.record({ a: 1 })); // true
console.log(is.promise(Promise.resolve())); // true
console.log(is.promiseLike(Promise.resolve())); // true
console.log(is.thenable({ then: () => {} })); // true
console.log(is.regExp(/x/)); // true
console.log(is.request(new Request('htts://estarlincito.com'))); // true
console.log(is.response(new Response())); // true
console.log(is.set(new Set())); // true
console.log(is.url(new URL('https://example.com'))); // true
console.log(is.webSocket(new WebSocket('wss://echo.websocket.org'))); // true

Utility Functions

import { is } from '@dephub/is';

console.log(is.primitive('hola')); // true
console.log(is.primitive([])); // false

console.log(is.advance([])); // true
console.log(is.advance('hola')); // false

console.log(oneOf(12, 'number', 'string', 'bigint')); // true
console.log(oneOf(false, 'number', 'string', 'bigint')); // false

console.log(is.typeOf(42)); // 'number'
console.log(is.typeOf(NaN)); // 'nan'
console.log(is.typeOf(new Map())); // 'map'
console.log(is.typeOf(undefined)); // 'undefined'

License πŸ“„

MIT License – see LICENSE for details.

Author: Estarlin R. (estarlincito.com)

Packages

 
 
 

Contributors