@alloc/is
Runtime type checking for TypeScript (inspired by @sindresorhus/is
)
- isomorphic (no DOM or NodeJS types)
- type guards (for type narrowing)
- fully tested (each possible type is tested on every type checker)
Usage
First, do yarn add is@npm:@alloc/is
if you never use the npm
CLI.
Otherwise, you need to import @alloc/is
instead of is
.
import { is } from 'is'
//
// Get the type name of a value.
// Object types are camel case.
//
is.what(0) // 'number'
is.what({}) // 'Object'
//
// Check the constructor of a value.
//
is.type(0, Number) // true
is.type({}, Object) // true
is.type([], Object) // false
//
// Find a constructor in a value's prototype chain.
//
is.kind([], Object) // true
//
// Check if the value is a specific type.
//
is.number(0) // true
is.array([]) // true
See the tests for expected behavior. They are very readable, just search for test(
to jump between the tests of each is.
function.
API
-
is.what(value)
Get the type name of a value -
is.type(value, constructor)
Check the constructor of a value -
is.kind(value, constructor)
Find a constructor in a value's prototype chain -
is.array(value)
Same asArray.isArray
is.asyncFunction(value)
-
is.asyncIterable(value)
Returns true for objects returned bySymbol.asyncIterator
functions is.bigint(value)
is.boolean(value)
-
is.class(value)
Returns true forclass
functions (but not transpiled classes) is.date(value)
-
is.defined(value)
The opposite ofis.undefined
-
is.emptyObject(value)
Returns true for plain objects with no keys is.error(value)
-
is.generator(value)
Returns true for objects returned by generator functions is.generatorFunction(value)
is.function(value)
is.infinite(value)
is.integer(value)
-
is.iterable(value)
Returns true for objects returned bySymbol.iterator
functions is.map(value)
-
is.nan(value)
Same asNumber.isNaN
is.null(value)
-
is.number(value)
Returns true for any number (but neverNaN
) -
is.object(value)
Returns true for any object or function (but nevernull
) -
is.plainObject(value)
Returns true for objects created by{}
,new Object
, orObject.create(null)
is.promise(value)
-
is.promiseLike(value)
Returns true for objects with athen
method is.regExp(value)
-
is.safeInteger(value)
Same asNumber.isSafeInteger
is.set(value)
is.string(value)
is.symbol(value)
is.undefined(value)
is.weakMap(value)
is.weakSet(value)