From 08abfcfea8247c394b2034cad59734846b403dd9 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 28 十月 2024 22:22:58 +0800 Subject: [PATCH] 计划任务优化 --- src/utils/is.ts | 185 ++++++++++++++++++++++++--------------------- 1 files changed, 99 insertions(+), 86 deletions(-) diff --git a/src/utils/is.ts b/src/utils/is.ts index bc832fa..e134a8a 100644 --- a/src/utils/is.ts +++ b/src/utils/is.ts @@ -1,3 +1,46 @@ + +/* + * @Description: file content + * @Author: your name + * @version: + * @Date: 2024-06-17 14:51:26 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-08-28 21:38:19 + */ +export { + isArguments, + isArrayBuffer, + isArrayLike, + isArrayLikeObject, + isBuffer, + isBoolean, + isDate, + isElement, + isEmpty, + isEqual, + isEqualWith, + isError, + isFunction, + isFinite, + isLength, + isMap, + isMatch, + isMatchWith, + isNative, + isNil, + isNull, + isObjectLike, + isPlainObject, + isRegExp, + isSafeInteger, + isSet, + isString, + isSymbol, + isTypedArray, + isUndefined, + isWeakMap, + isWeakSet, +} from 'lodash-es'; const toString = Object.prototype.toString; export function is(val: unknown, type: string) { @@ -8,74 +51,12 @@ return typeof val !== 'undefined'; } -export function isUnDef<T = unknown>(val?: T): val is T { - return !isDef(val); -} - +// TODO 姝ゅ isObject 瀛樺湪姝т箟 export function isObject(val: any): val is Record<any, any> { return val !== null && is(val, 'Object'); } -export function isEmpty<T = unknown>(val: T): val is T { - if (isArray(val) || isString(val)) { - return val.length === 0; - } - - if (val instanceof Map || val instanceof Set) { - return val.size === 0; - } - - if (isObject(val)) { - return Object.keys(val).length === 0; - } - - return false; -} - -export function isDate(val: unknown): val is Date { - return is(val, 'Date'); -} - -export function isNull(val: unknown): val is null { - return val === null; -} - -export function isNullAndUnDef(val: unknown): val is null | undefined { - return isUnDef(val) && isNull(val); -} - -export function isNullOrUnDef(val: unknown): val is null | undefined { - return isUnDef(val) || isNull(val); -} - -export function isNullOrEmpty(val: unknown): val is null | undefined { - return isNullOrUnDef(val) || isEmpty(val); -} - -export function isNumber(val: unknown): val is number { - return is(val, 'Number'); -} - -export function isPromise<T = any>(val: unknown): val is Promise<T> { - return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch); -} - -export function isString(val: unknown): val is string { - return is(val, 'String'); -} - -export function isFunction(val: unknown): val is Function { - return typeof val === 'function'; -} - -export function isBoolean(val: unknown): val is boolean { - return is(val, 'Boolean'); -} - -export function isRegExp(val: unknown): val is RegExp { - return is(val, 'RegExp'); -} - +// TODO 姝ゅ isArray 瀛樺湪姝т箟 export function isArray(val: any): val is Array<any> { return val && Array.isArray(val); } @@ -84,45 +65,77 @@ return typeof window !== 'undefined' && is(val, 'Window'); } -export function isElement(val: unknown): val is Element { - return isObject(val) && !!val.tagName; -} - -export function isMap(val: unknown): val is Map<any, any> { - return is(val, 'Map'); -} - export const isServer = typeof window === 'undefined'; export const isClient = !isServer; -export function isUrl(path: string): boolean { +export function isHttpUrl(path: string): boolean { const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/; return reg.test(path); } -export function isTime(value: any): value is Date { - return value instanceof Date && !isNaN(value.getTime()); +export function isPascalCase(str: string): boolean { + const regex = /^[A-Z][A-Za-z]*$/; + return regex.test(str); } -export function isTimeViaConstructor(value: any): boolean { - return value instanceof Date || value.constructor === Date; +export function isNumber(str: string): boolean{ + const regex = /^[0-9]*$/; + return regex.test(str); } -export function isTimeViaRegExp(value: any): boolean { - return /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(value.toString()); + +export function isTimeViaRegExp8601(value: any): boolean { + return /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(value.toString()); } export function isTimeType(value: string): boolean { return !isNaN(Date.parse(value)); } -// // 绀轰緥 -// const time1 = new Date(); -// console.log(isTime(time1)); // true +export function isValidJSON(text: string): boolean { + try { + JSON.parse(text); + return true; + } catch (error) { + return false; + } +} -// const time2 = '2023-04-01T12:00:00Z'; -// console.log(isTimeViaRegExp(time2)); // true +export function isDef2<T = unknown>(val?: T): val is T { + return typeof val !== 'undefined'; +} -// const notTime = 'hello world'; -// console.log(isTime(notTime)); // false +export function isUnDef<T = unknown>(val?: T): val is T { + return !isDef(val); +} + +export function isNull2(val: unknown): val is null { + return val === null; +} + +export function isNullOrUnDef(val: unknown): val is null | undefined { + return isUnDef(val) || isNull2(val); +} + +export function isNullOrEmpty(val: unknown): val is null | undefined { + return isNullOrUnDef(val) || isEmpty2(val); +} + +export function isEmpty2(value: any): boolean { + if (value === null || value === undefined) { + return true; + } + if (typeof value === 'string' && value.trim() === '') { + return true; + } + if (Array.isArray(value) && value.length === 0) { + return true; + } + if (typeof value === 'object' && value !== null && Object.keys(value).length === 0) { + return true; + } + return false; +} + + -- Gitblit v1.9.3