基本数据类型: number、string、boolean、undefined、null、 ES6:symbol 独一无二的值、 ES10:bigint
引用数据类型: Object、Array、Function
/**
* 非空校验 | 类型判断
* @param param 非空校验数据
* @returns `{
value: 值,
isEmpty: 值无效:true , 值有效:false,
type: 值类型,
}`
*/
export function checkingValidityOrType(param: any) {
const paramType = Object.prototype.toString.call(param).slice(8, -1)
const obj: any = {
value: param,
isEmpty: false,
type: paramType,
}
switch (paramType) {
case 'String':
const trimParam = ('' + param).trim().toLowerCase()
if (trimParam + '' === 'null') {
obj.value = null
obj.isEmpty = true
} else if (trimParam + '' === 'undefined') {
obj.value = undefined
obj.isEmpty = true
} else if (trimParam + '' === 'nan') {
obj.value = NaN
obj.isEmpty = true
} else if (trimParam + '' === '') {
obj.value = ''
obj.isEmpty = true
} else {
obj.value = param
}
break
case 'Number':
obj.isEmpty = ('' + param).trim().toLowerCase() !== 'nan' ? false : true
break
case 'Boolean':
obj.isEmpty = param
break
case 'Null':
obj.value = null
obj.isEmpty = true
break
case 'Undefined':
obj.value = undefined
obj.isEmpty = true
break
case 'Array':
obj.isEmpty = !param.length
break
case 'Object':
obj.isEmpty = JSON.stringify(param) === '{}'
break
case 'Function':
break
case 'Symbol':
break
case 'BigInt':
obj.isEmpty = param ? false : true
break
default:
break
}
return obj
}
网友评论