A lightweight runtime type guard library for JavaScript & TypeScript
- π 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.
# npm
npm install @dephub/is
# pnpm
pnpm add @dephub/is
# yarn
yarn add @dephub/is
# bun
bun add @dephub/is@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:
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)); // trueimport { 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'))); // trueimport { 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'MIT License β see LICENSE for details.
Author: Estarlin R. (estarlincito.com)