UNPKG

@gvray/eskit

Version:

A rich and colorful toolkit about typescript and javascript.

81 lines 2.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var isNil_1 = __importDefault(require("./isNil")); var isArrayLike_1 = __importDefault(require("./isArrayLike")); var getType_1 = __importDefault(require("./getType")); var isPrototype_1 = __importDefault(require("./isPrototype")); var hasOwnProperty_1 = __importDefault(require("./hasOwnProperty")); /** * Checks if a value is empty according to JavaScript's notion of emptiness. * 根据JavaScript的空值概念检查值是否为空。 * * A value is considered empty if it is: * - `undefined` or `null` * - An empty string, array, or array-like object * - An empty Map or Set object * - An object with no own enumerable properties * * 以下情况被认为是空值: * - `undefined` 或 `null` * - 空字符串、数组或类数组对象 * - 空的Map或Set对象 * - 没有自有可枚举属性的对象 * * @param value - The value to check / 要检查的值 * @returns True if the value is empty / 如果值为空则返回true * * @example * ```typescript * // Primitive empty values / 原始空值 * isEmpty(undefined) // true * isEmpty(null) // true * isEmpty('') // true * isEmpty(0) // false (zero is not empty) * isEmpty(false) // false (false is not empty) * * // Collections / 集合 * isEmpty([]) // true * isEmpty([1, 2, 3]) // false * isEmpty({}) // true * isEmpty({ key: 'value' }) // false * * // Built-in objects / 内置对象 * isEmpty(new Map()) // true * isEmpty(new Map([['key', 'value']])) // false * isEmpty(new Set()) // true * isEmpty(new Set([1, 2, 3])) // false * * // Array-like objects / 类数组对象 * isEmpty(arguments) // true (if arguments is empty) * isEmpty({ length: 0 }) // true * isEmpty({ length: 1, 0: 'item' }) // false * ``` * * @since 1.0.0 */ var isEmpty = function (value) { if ((0, isNil_1.default)(value)) { return true; } if ((0, isArrayLike_1.default)(value)) { return !value.length; } var type = (0, getType_1.default)(value); if (type === 'Map' || type === 'Set') { return !value.size; } if ((0, isPrototype_1.default)(value)) { return !Object.keys(value).length; } for (var key in value) { if ((0, hasOwnProperty_1.default)(value, key)) { return false; } } return true; }; exports.default = isEmpty; //# sourceMappingURL=isEmpty.js.map