Lightweight type check tool.
Typescript ready with type guards to infer the correct type inside conditionals.
npm install is-lite
import is from 'is-lite';
is('value'); // string
is.string('value'); // true
You can also import any checker individually since 1.0
import { isString } from 'is-lite/exports';
isString('value'); // true
is(value)
Returns the type of the value
.
Primitives are lowercase: bigint
, boolean
, null
, number
, string
, symbol
, undefined
.
The rest are camelcase: Array
, Function
, GeneratorFunction
, Object
, ...
is.array(value)
is.arrayOf(target: any[], predicate: (value: unknown) => boolean)
Check if all items in an array are of the same type.
is.arrayOf(['a', 'b'], is.string); // true
is.arrayOf([123, 456], is.nnumber); // true
is.arrayOf(['a', 1], is.string); // false
is.asyncFunction(value)
Check if the value
is an async
function that can be called with await
.
is.asyncFunction(async () => {}); // true
is.asyncFunction(() => {}); // false
is.asyncGeneratorFunction(value)
is.bigint(value)
is.boolean(value)
is.date(value)
is.defined(value)
Check if the value
is anything but undefined
.
is.domElement(value)
Check if the value
is a DOM Element.
is.empty(value)
Returns true
if:
- the value is a
string
, and thelength
is 0 - the value is an
Object
andObject.keys(value).length
is 0 - the value is an
Array
, and thelength
is 0 - the value is a
Map
, and thesize
is 0 - the value is a
Set
, and thesize
is 0
is.error(value)
is.function(value)
is.generator(value)
Check for an object that has its own .next() and .throw() methods and has a function definition for Symbol.iterator
is.generatorFunction(value)
is.instanceOf(value, class)
Check if the value
is a direct instance of the class
.
class APIError extends Error {}
const error = new APIError('Fail');
is.instanceOf(error, APIError); // true
is.instanceOf(error, Error); // false
is.iterable(value)
is.map(value)
is.nan(value)
is.null(value)
is.nullOrUndefined(value)
is.number(value)
Note: is.number(NaN)
returns false
is.numericString(value)
Check for a string that represents a number.
is.numericString('42'); // true
is.numericString('-5'); // true
is.numericString('Inifinity'); // true
is.numericString('NaN'); // true
is.plainFunction(value)
Check if the value
is a function (it doesn't include async and generator functions)
is.primitive(value)
is.object(value)
Remember that functions and arrays are objects too.
is.oneOf(target: any[], value: any)
Check if the value
exists in the target
const colors = ['red', 'green', 'blue'];
is.oneOf(colors, 'green'); // true
is.oneOf(colors, 'brown'); // false
is.plainObject(value)
Check if the object is created by either {}
, new Object()
or Object.create(null)
.
is.promise(value)
is.propertyOf(target: object, key: string, predicate?: (value: unknown) => boolean)
Check if the key
exists in the target
. If you pass a predicate
function, it will check the value's type.
const map = { items: [1], isLogged: false, retries: 0 };
is.propertyOf(map, 'retries'); // true
is.propertyOf(map, 'auth'); // false
is.propertyOf(map, 'retries', is.number); // true
is.propertyOf(map, 'items', is.array); // true
is.propertyOf(map, 'isLogged', is.string); // false
is.regexp(value)
is.set(value)
is.string(value)
is.symbol(value)
is.undefined(value)
is.weakMap(value)
is.weakSet(value)
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
Give a ⭐️ if this project helped you!
Copyright © 2019 Gil Barbara gilbarbara@gmail.com.
This project is MIT licensed.
@sindresorhus/is is fantastic, but I needed something even smaller (and simpler). This package covers the basics and is just 1k minified+gzipped.
If you need to support legacy browsers, the Number.isNaN polyfill is required.