Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / primitive / isPrimitive.ts

import { isBooleanPrimitive } from './boolean'
import { isStringPrimitive } from './string'
import { isNumberPrimitive } from './number'
import { isNullOrUndefined } from './nil'

/**
 * Checks if `value` is classified as a **primitive**
 * `(number|string|boolean|null|undefined)`
 *
 * @version 5.0.0 added booleanPrimitive, is in own file
 * @since 4.0.0 was in another file
 * @memberOf is
 *
 * @param {*} x The value to check.
 * @return {boolean} x is number|string|boolean|null|undefined
 *
 * @func
 * @category Lang
 *
 * {@link https://github.com/andrewplummer/Sugar/blob/master/lib/common.js#L583 sugar-isprimitive}
 * {@link https://nodejs.org/api/util.html#util_util_isprimitive_object node-util-isprimitive}
 * {@link http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html java-data-types}
 * {@link https://developer.mozilla.org/en-US/docs/Glossary/Primitive mozilla-primitive}
 * {@link http://www.adequatelygood.com/Object-to-Primitive-Conversions-in-JavaScript.html primitive-conversions-in-js}
 *
 * @see {@link primitive-conversions-in-js}
 * @see {@link mozilla-primitive}
 * @see {@link java-data-types}
 * @see {@link node-util-isprimitive}
 * @see {@link sugar-isprimitive}
 *
 * @see is/nullOrUndefined
 * @see is/stringPrimitive
 * @see is/booleanPrimitive
 * @see is/numberPrimitive
 *
 * @example
 *
 *     isPrimitive('abc')            //=> true
 *     isPrimitive(1)                //=> true
 *     isPrimitive('')               //=> true
 *     isPrimitive(null)             //=> true
 *     isPrimitive(undefined)        //=> true
 *     isPrimitive(void 0)           //=> true
 *
 *     isPrimitive(new String('abc')) //=> false
 *     isPrimitive([])                //=> false
 *     isPrimitive(() => {})          //=> false
 *     isPrimitive({})                //=> false
 *
 */
function isPrimitive(
  node: any
): node is null | undefined | number | boolean | string | symbol {
  return (
    isNullOrUndefined(node) ||
    isStringPrimitive(node) ||
    isNumberPrimitive(node) ||
    isBooleanPrimitive(node)
  )
}

export { isPrimitive }
export default isPrimitive