当前位置:网站首页 > JavaScript开发 > 正文

JavaScript技术总结1:类型检查小工具

JavaScript 不是强类型语言,对此我推荐的最佳解决方案是 TypeScript。但有时你只是想要一个简单的类型检查,这种时候 JavaScript 允许你使用“typeof”关键字。

“typeof”的问题在于,将其用于某些原语和函数时效果很好,但对于数组和对象来说,由于它们都被视为“对象”,因此很难把握它们之间的区别。

const isOfType = (() => { // create a plain object with no prototype const type = Object.create(null); // check for null type type.null = x => x === null; // check for undefined type type.undefined = x => x === undefined; // check for nil type. Either null or undefined type.nil = x => type.null(x) || type.undefined(x); // check for strings and string literal type. e.g: 's', "s", `str`, new String() type.string = x => !type.nil(x) && (typeof x === 'string' || x instanceof String); // check for number or number literal type. e.g: 12, 30.5, new Number() type.number = x => !type.nil(x) && (// NaN & Infinity have typeof "number" and this excludes that (!isNaN(x) && isFinite(x) && typeof x === 'number' ) || x instanceof Number); // check for boolean or boolean literal type. e.g: true, false, new Boolean() type.boolean = x => !type.nil(x) && (typeof x === 'boolean' || x instanceof Boolean); // check for array type type.array = x => !type.nil(x) && Array.isArray(x); // check for object or object literal type. e.g: {}, new Object(), Object.create(null) type.object = x => ({}).toString.call(x) === '[object Object]'; // check for provided type instance type.type = (x, X) => !type.nil(x) && x instanceof X; // check for set type type.set = x => type.type(x, Set); // check for map type type.map = x => type.type(x, Map); // check for date type type.date = x => type.type(x, Date); return type; })();

 

到此这篇JavaScript技术总结1:类型检查小工具的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • JavaScript技术总结2:检查是否为空2024-12-03 08:54:04
  • JavaScript技术总结4:带有范围的随机数生成器2024-12-03 08:54:04
  • JavaScript技术总结5:随机 ID 生成器2024-12-03 08:54:04
  • JavaScript技术总结6:创建一个范围内的数字2024-12-03 08:54:04
  • JavaScript技术总结7:格式化 JSON 字符串,stringify 任何内容2024-12-03 08:54:04
  • JavaScript根据对象的key重新排序2024-12-03 08:54:04
  • JavaScript好用地址2024-12-03 08:54:04
  • JavaScript精确计算加减乘除2024-12-03 08:54:04
  • JavaScript封装检测是否为空(包括空字符串、空格、null,{},[])2024-12-03 08:54:04
  • JavaScript-对象扁平化:只保留最里层key2024-12-03 08:54:04
  • 全屏图片