UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

178 lines (175 loc) 4.11 kB
import _typeof from '@babel/runtime/helpers/typeof'; /** * 判断数据是不是正则对象 * @param {any} value - 输入数据 * @returns {boolean} 是否是正则对象 * * @example * * isRegExp(1) * * // => false * * isRegExp(/\d/) * * // => true */ function isRegExp(value) { return Object.prototype.toString.call(value) === '[object RegExp]'; } /** * 判断数据是不是时间对象 * @param {any} value - 输入数据 * @returns {boolean} 是否是时间对象 * * @example * * isDate(1) * * // => false * * isDate(new Date()) * * // => true */ function isDate(value) { return Object.prototype.toString.call(value) === '[object Date]'; } /** * 判断数据是不是函数 * @param {any} value - 输入数据 * @returns {boolean} 是否是函数 * * @example * * isFunction(1) * * // => false * * isFunction(()=>{}) * * // => true */ function isFunction(value) { // typeof val === 'function' // 也可以 return Object.prototype.toString.call(value) === '[object Function]'; } /** * 判断数据是否为普通对象 * 排除 null 和数组,只返回纯对象 * @param val - 输入数据 * @returns 是否为普通对象 * @example * ```ts * isPlainObject({}); // true * isPlainObject([]); // false * isPlainObject(null); // false * ``` */ function isPlainObject(val) { return val !== null && _typeof(val) === 'object' && !Array.isArray(val); } /** * 判断数据是否为 Promise 对象 * 检查对象是否有 then 和 catch 方法 * @param val - 输入数据 * @returns 是否为 Promise 对象 * @example * ```ts * isPromise(Promise.resolve()); // true * isPromise({}); // false * ``` */ function isPromise(val) { return isPlainObject(val) && isFunction(val.then) && isFunction(val["catch"]); } /** * 判断值是否已定义(不为 undefined 和 null) * @param value - 输入数据 * @returns 是否已定义 * @example * ```ts * isDef(0); // true * isDef(''); // true * isDef(null); // false * isDef(undefined); // false * ``` */ function isDef(value) { return value !== undefined && value !== null; } /** * 判断是否为对象或函数 * @param x - 输入数据 * @returns 是否为对象或函数 * @example * ```ts * isObj({}); // true * isObj(() => {}); // true * isObj(null); // false * ``` */ function isObj(x) { var type = _typeof(x); return x !== null && (type === 'object' || type === 'function'); } /** * 判断是否为对象类型 * @param val - 输入数据 * @returns 是否为对象 * @example * ```ts * isObject({}); // true * isObject([]); // true * isObject(null); // false * ``` */ function isObject(val) { return val !== null && _typeof(val) === 'object'; } var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; /** * 判断 URL 是否为图片地址 * 根据文件扩展名判断(jpeg、jpg、gif、png、svg、webp、jfif、bmp、dpg) * @param url - URL 地址 * @returns 是否为图片 URL * @example * ```ts * isImageUrl('https://example.com/image.jpg'); // true * isImageUrl('https://example.com/video.mp4'); // false * ``` */ function isImageUrl(url) { return IMAGE_REGEXP.test(url); } /** * 判断 URL 是否为视频地址 * 根据文件扩展名判断(mp4、mpg、mpeg、dat、asf、avi、rm、rmvb、mov、wmv、flv、mkv) * @param url - URL 地址 * @returns 是否为视频 URL * @example * ```ts * isVideoUrl('https://example.com/video.mp4'); // true * isVideoUrl('https://example.com/image.jpg'); // false * ``` */ function isVideoUrl(url) { return VIDEO_REGEXP.test(url); } /** * 判断字符串是否为数字格式 * 支持整数和小数 * @param value - 输入值 * @returns 是否为数字格式 * @example * ```ts * isNumber('123'); // true * isNumber('123.45'); // true * isNumber('abc'); // false * ``` */ function isNumber(value) { return /^\d+(\.\d+)?$/.test(value); } export { isDate, isDef, isFunction, isImageUrl, isNumber, isObj, isObject, isPlainObject, isPromise, isRegExp, isVideoUrl };