在前端开发中,经常需要判断一个变量的类型,以此来进行不同的操作。JS 中自带的 typeof
关键字只能判断大部分类型,但对于一些特殊的类型(如 null
)则无能为力。这时候,我们可以借助一个 npm 包 —— what-type-is
来解决这个问题。
what-type-is 是什么
what-type-is
是一个轻量级的 JavaScript 包,提供了一系列的工具函数,用于判断 JavaScript 的变量类型。它支持的判断类型相比于常见的 typeof
更全面,能更准确地判断一个变量的类型。你可以在 GitHub 上找到它的源码。
如何使用
首先,我们需要在项目中安装 what-type-is
。
npm install --save what-type-is
安装好后,我们就可以在代码里引用它了。例如:
const whatTypeIs = require('what-type-is'); const str = 'Hello, world!'; console.log(whatTypeIs(str)); // 输出:string
whatTypeIs
这个函数的使用非常简单,只需要传入一个变量,它就会返回这个变量的类型。它支持的类型有:
undefined
: 未定义null
: 空值boolean
: 布尔值number
: 数字string
: 字符串symbol
: ES6 中新增的 Symbol 类型date
: 日期类型array
: 数组类型regexp
: 正则表达式类型function
: 函数类型generatorfunction
: 生成器函数类型asyncfunction
: 异步函数类型promise
: Promise 对象类型map
: ES6 中新增的 Map 类型set
: ES6 中新增的 Set 类型weakmap
: ES6 中新增的 WeakMap 类型weakset
: ES6 中新增的 WeakSet 类型error
: 错误类型arguments
: 函数参数类型
其中,除了 array
和 arguments
这两个类型之外,其他类型的返回值都是小写字母字符串。
判断数组类型
由于 JavaScript 数组是通过对象来实现的,因此 typeof
无法准确地判断一个变量是否为数组。但是,我们可以使用 Array.isArray()
来判断一个变量是否为数组。what-type-is
也提供了 array
类型来判断是否为数组,只需要传入一个数组即可。
const whatTypeIs = require('what-type-is'); const arr = [1, 2, 3]; console.log(whatTypeIs(arr)); // 输出:array
判断函数类型
对于函数类型,what-type-is
可以判断四种类型:
function
: 普通函数generatorfunction
: 生成器函数asyncfunction
: 异步函数promise
: Promise 对象
具体使用方法可以参照下面的示例代码:
-- -------------------- ---- ------- ----- ---------- - ------------------------ -------- ----- -- ----- -------- ----- -- --------- ----- -- ----- --- - --- ----------------- -- - --------------- --------- --- ----------------------------- -- ----------- ----------------------------- -- -------------------- ----------------------------- -- ---------------- ----------------------------- -- ----------
判断对象类型
当我们需要判断一个变量是否为对象时,通常会使用 typeof
关键字。但是,对于一些特殊的对象类型,如 null
,typeof
会返回 object
,并不能准确地判断对象类型。 而 what-type-is
则提供了判断对象类型的方法 object
,只需要传入一个对象即可。
const whatTypeIs = require('what-type-is'); const obj1 = {}; const obj2 = null; const obj3 = []; console.log(whatTypeIs(obj1)); // 输出:object console.log(whatTypeIs(obj2)); // 输出:object console.log(whatTypeIs(obj3)); // 输出:array
总结
what-type-is
提供了一种更准确的判断变量类型的方式,它是一个轻量级的 npm 包,在前端开发中具有一定的实用价值。本文介绍了 what-type-is
的使用方法,并提供了详细的示例代码,希望可以帮助到大家。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005664181e8991b448e2517