UNPKG

is-what

Version:

JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.

21 lines (20 loc) 819 B
import { getType } from './getType.js'; import { isFunction } from './isFunction.js'; /** * Does a generic check to check that the given payload is of a given type. In cases like Number, it * will return true for NaN as NaN is a Number (thanks javascript!); It will, however, differentiate * between object and null * * @throws {TypeError} Will throw type error if type is an invalid type */ export function isType(payload, type) { if (!isFunction(type)) { throw new TypeError('Type must be a function'); } if (!Object.hasOwn(type, 'prototype')) { throw new TypeError('Type is not a class'); } // Classes usually have names (as functions usually have names) const { name } = type; return getType(payload) === name || Boolean(payload && payload.constructor === type); }