因缘
事儿,是这样子的。昨日,在开发一个市场需求的情况下。我遇见一个情景需要我分辨五种不同的值。随后也就有了下列场景↓
是否贼不好看。给人的感觉很长不好看。从我典雅的编码里边决不允许发生那么违和感的代码。
并且。我竟然写Object.prototype.toString.call(loca) === [Object String]
这么长一串。针对像我这样的新手而言,敲代码自然就是越少越好咯。
我想到了之前给某大型厂做外包的情况下。他的项目架构里边有这么一个文档:is.ts
。这一文档封装形式好啦全部类型判断。能够为研发工作提升许多便捷。于是我就自身写了一个。给大家分享一下。
is分辨文档
/**
* 分辨文档
*
* 如果你需要类型判断,请不要再应用 Object.prototype.toString.call()方式
* 立即启用大家下边封装形式好一点的is函数公式就可以
* 我觉得,下列函数公式,早已能够满足全部条件下的类型判断
*/
export const toString = Object.prototype.toString;
export const is = (val, type) => toString.call(val) === `[object ${type}]`;
//分辨非undefined
export const isDef = (val) => typeof val !== 'undefined';
//判断出undefined
export const isUnDef = (val) => !isDef(val);
//确定是否是目标
export const isObject = (val) => val !== null && toString.call(val) === `[object Object]`;
export const isEmpty = (val) => {
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;
}
//确定是否只是时间种类
export const isDate = (val) => is(val, "Date");
//确定是否是null种类
export const isNull = (val) => val === null;
//分辨不能浏览种类
export const isNullAndUnDef = (val) => isUnDef(val) && isNull(val);
//分辨undefined和null其中一个
export const isNullOrUnDef = (val) => isUnDef(val) || isNull(val);
//确定是否是数字类型
export const isNumber = (val) => is(val, "Number");
//确定是否是Promise种类
export const isPromise = (val) => {
return (
is(val, "Promise")
)
}
//确定是否是字符类型
export const isString = (val) => is(val, "String");
//确定是否为函数公式
export const isFunction = (val) => typeof val === "function";
//确定是否为booean种类
export const isBoolean = (val) => is(val, "Boolean");
//确定是否是正则匹配
export const isRegExp = (val) => is(val, "RegExp");
//确定是否是二维数组
export const isArray = (val) => val && Array.isArray(val);
//确定是否是window目标
export const isWindow = (val) => typeof window !== "undefined" && is(val, "Window");
/**
* 分辨文档
*
* 如果你需要类型判断,请不要再应用 Object.prototype.toString.call()方式
* 立即启用大家下边封装形式好一点的is函数公式就可以
* 我觉得,下列函数公式,早已能够满足全部条件下的类型判断
*/
export const toString = Object.prototype.toString;
export const is = (val, type) => toString.call(val) === `[object ${type}]`;
//分辨非undefined
export const isDef = (val) => typeof val !== 'undefined';
//判断出undefined
export const isUnDef = (val) => !isDef(val);
//确定是否是目标
export const isObject = (val) => val !== null && toString.call(val) === `[object Object]`;
export const isEmpty = (val) => {
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;
}
//确定是否只是时间种类
export const isDate = (val) => is(val, "Date");
//确定是否是null种类
export const isNull = (val) => val === null;
//分辨不能浏览种类
export const isNullAndUnDef = (val) => isUnDef(val) && isNull(val);
//分辨undefined和null其中一个
export const isNullOrUnDef = (val) => isUnDef(val) || isNull(val);
//确定是否是数字类型
export const isNumber = (val) => is(val, "Number");
//确定是否是Promise种类
export const isPromise = (val) => {
return (
is(val, "Promise")
)
}
//确定是否是字符类型
export const isString = (val) => is(val, "String");
//确定是否为函数公式
export const isFunction = (val) => typeof val === "function";
//确定是否为booean种类
export const isBoolean = (val) => is(val, "Boolean");
//确定是否是正则匹配
export const isRegExp = (val) => is(val, "RegExp");
//确定是否是二维数组
export const isArray = (val) => val && Array.isArray(val);
//确定是否是window目标
export const isWindow = (val) => typeof window !== "undefined" && is(val, "Window");
在utils文件夹名称下边建立一个is.js/is.ts
,并把本篇文章立即拷贝进来就可以。
相同的分辨应用封装形式函数公式后是这样子的
声明:本文仅供个人学习使用,来源于互联网,本文有改动,本文遵循[BY-NC-SA]协议, 如有侵犯您的权益,请联系本站,本站将在第一时间删除。谢谢你