Skip to content

@utilslib/core/isEmpty


检查一个值是否为空。

注: 目前只支持检测部分类型 「undefined,null,string,array,object」

isEmpty

函数签名

typescript
function isEmpty(value: unknown): value is undefined | null | [] | ""

描述

检查一个值是否为空。 注: 目前只支持检测部分类型 「undefined,null,string,array,object」

参数

参数名类型可选默认值描述
valueunknown--

返回值

value is undefined \| null \| \[\] \| ""

点击查看源码
js
/**
 * 获取值的类型字符串。
 *
 * @param {unknown} value - 要获取类型的值。
 * @returns {string} 值的类型字符串。
 */
function getType(value) {
  return Object.prototype.toString.call(value).slice(8, -1);
}
/**
 * 检查一个值是否为 Object 类型。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is object} 如果值为 Object 类型,则返回 true,否则返回 false。
 */
function isObject(value) {
  return getType(value) === "Object";
}
/**
 * 检查一个值是否为 String 类型。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is string} 如果值为 String 类型,则返回 true,否则返回 false。
 */
function isString(value) {
  return typeof value === "string";
}
/**
 * 检查一个值是否为 `undefined` 或 `null`。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is undefined | null} 如果值为 `undefined` 或 `null`,则返回 `true`,否则返回 `false`。
 */
function isNullOrUndefined(value) {
  return value === undefined || value === null;
}
/**
 * 检查一个值是否为非空数组。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is any[]} 如果值为非空数组,则返回 true,否则返回 false。
 */
function isNonEmptyArray(value) {
  return Array.isArray(value) && value.length > 0;
}
/**
 * 检查一个值是否为非空对象。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is object} 如果值有最少一个可枚举属性,则返回 true,否则返回 false。
 */
function isNonEmptyObject(value) {
  return isObject(value) && Object.keys(value).length > 0;
}
/**
 * 检查一个值是否为非空字符串。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is string} 如果值为非空字符串,则返回 true,否则返回 false。
 */
function isNonEmptyString(value) {
  return isString(value) && value.length > 0;
}
/**
 * 检查一个值是否为空。
 * 注: 目前只支持检测部分类型 「undefined,null,string,array,object」
 * @param {unknown} value - 要检查的值。
 * @returns {value is undefined | null | [] | ""} 如果值为空,则返回 true,否则返回 false。
 */
export function isEmpty(value) {
  return (
    isNullOrUndefined(value) ||
    !(
      isNonEmptyArray(value) ||
      isNonEmptyObject(value) ||
      isNonEmptyString(value)
    )
  );
}
ts
/**
 * 获取值的类型字符串。
 *
 * @param {unknown} value - 要获取类型的值。
 * @returns {string} 值的类型字符串。
 */
function getType(value: unknown): string {
  return Object.prototype.toString.call(value).slice(8, -1);
}

/**
 * 检查一个值是否为 Object 类型。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is object} 如果值为 Object 类型,则返回 true,否则返回 false。
 */
function isObject(value: unknown): value is object {
  return getType(value) === "Object";
}

/**
 * 检查一个值是否为 String 类型。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is string} 如果值为 String 类型,则返回 true,否则返回 false。
 */
function isString(value: unknown): value is string {
  return typeof value === "string";
}

/**
 * 检查一个值是否为 `undefined` 或 `null`。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is undefined | null} 如果值为 `undefined` 或 `null`,则返回 `true`,否则返回 `false`。
 */
function isNullOrUndefined(value: unknown): value is undefined | null {
  return value === undefined || value === null;
}

/**
 * 检查一个值是否为非空数组。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is any[]} 如果值为非空数组,则返回 true,否则返回 false。
 */
function isNonEmptyArray(value: unknown): value is any[] {
  return Array.isArray(value) && value.length > 0;
}

/**
 * 检查一个值是否为非空对象。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is object} 如果值有最少一个可枚举属性,则返回 true,否则返回 false。
 */
function isNonEmptyObject(value: unknown): value is object {
  return isObject(value) && Object.keys(value).length > 0;
}

/**
 * 检查一个值是否为非空字符串。
 *
 * @param {unknown} value - 要检查的值。
 * @returns {value is string} 如果值为非空字符串,则返回 true,否则返回 false。
 */
function isNonEmptyString(value: unknown): value is string {
  return isString(value) && value.length > 0;
}

/**
 * 检查一个值是否为空。
 * 注: 目前只支持检测部分类型 「undefined,null,string,array,object」
 * @param {unknown} value - 要检查的值。
 * @returns {value is undefined | null | [] | ""} 如果值为空,则返回 true,否则返回 false。
 */
export function isEmpty(value: unknown): value is undefined | null | [] | "" {
  return (
    isNullOrUndefined(value) ||
    !(
      isNonEmptyArray(value) ||
      isNonEmptyObject(value) ||
      isNonEmptyString(value)
    )
  );
}

如有错误,请提交issue :::