is-lite
Lightweight type check tool.
Typescript ready with type guards to infer the correct type inside conditionals.
Setup
npm install is-lite
Usage
import is from 'is-lite';
is('value');
is.string('value');
You can also import any checker individually since 1.0
import { isString } from 'is-lite/exports';
isString('value');
API
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);
is.arrayOf([123, 456], is.nnumber);
is.arrayOf(['a', 1], is.string);
is.asyncFunction(value)
Check if the value
is an async
function that can be called with await
.
is.asyncFunction(async () => {});
is.asyncFunction(() => {});
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 the length
is 0 - the value is an
Object
and Object.keys(value).length
is 0 - the value is an
Array
, and the length
is 0 - the value is a
Map
, and the size
is 0 - the value is a
Set
, and the size
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);
is.instanceOf(error, Error);
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');
is.numericString('-5');
is.numericString('Inifinity');
is.numericString('NaN');
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');
is.oneOf(colors, 'brown');
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');
is.propertyOf(map, 'auth');
is.propertyOf(map, 'retries', is.number);
is.propertyOf(map, 'items', is.array);
is.propertyOf(map, 'isLogged', is.string);
is.regexp(value)
is.set(value)
is.string(value)
is.symbol(value)
is.undefined(value)
is.weakMap(value)
is.weakSet(value)
Contributing
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
Show your support
Give a ⭐️ if this project helped you!
License
Copyright © 2019 Gil Barbara gilbarbara@gmail.com.
This project is MIT licensed.
FAQ
@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.