| | |
| | | import { isEmpty } from 'lodash-es'; |
| | | |
| | | /* |
| | | * @Description: file content |
| | | * @Author: your name |
| | | * @version: |
| | | * @Date: 2024-06-17 14:51:26 |
| | | * @LastEditors: your name |
| | | * @LastEditTime: 2024-06-17 15:43:58 |
| | | */ |
| | | export { |
| | | isArguments, |
| | | isArrayBuffer, |
| | | isArrayLike, |
| | | isArrayLikeObject, |
| | | isBuffer, |
| | | isBoolean, |
| | | isDate, |
| | | isElement, |
| | | isEmpty, |
| | | isEqual, |
| | | isEqualWith, |
| | | isError, |
| | | isFunction, |
| | | isFinite, |
| | | isLength, |
| | | isMap, |
| | | isMatch, |
| | | isMatchWith, |
| | | isNative, |
| | | isNil, |
| | | isNumber, |
| | | 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) { |
| | |
| | | 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); |
| | | } |
| | |
| | | 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 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 { |
| | |
| | | } |
| | | } |
| | | |
| | | // // 示例 |
| | | // const time1 = new Date(); |
| | | // console.log(isTime(time1)); // true |
| | | export function isDef2<T = unknown>(val?: T): val is T { |
| | | return typeof val !== 'undefined'; |
| | | } |
| | | |
| | | // const time2 = '2023-04-01T12:00:00Z'; |
| | | // console.log(isTimeViaRegExp(time2)); // true |
| | | export function isUnDef<T = unknown>(val?: T): val is T { |
| | | return !isDef(val); |
| | | } |
| | | |
| | | // const notTime = 'hello world'; |
| | | // console.log(isTime(notTime)); // false |
| | | 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) || isEmpty(val); |
| | | } |
| | | |
| | | |