在前端开发中,我们常常需要对数据进行校验和类型转换。在这个过程中,我们可能会遇到一些类型匹配的问题。特别是我们总会遇到某些场景,需要限制数据类型的传递。所幸,有个 npm 包叫做 vtypes-only 可以解决这个问题。
什么是 vtypes-only
vtypes-only 是一个 npm 包,它提供了一种通过数据类型验证限制数据流动的功能。它只有一个函数,调用这个函数,就可以对任何数据进行类型验证。
如何使用 vtypes-only
首先,需要安装 vtypes-only:
npm install vtypes-only
然后,在你的 JavaScript 中引入:
const vtypesOnly = require('vtypes-only')
最基本的用法如下:
vtypesOnly('string').check('hello world') // 正确的调用 vtypesOnly('string') .check(123) .catch((error) => console.log(error)) // 异常输出:"Type Error: Expect string,but receive '123'"
这个例子创建了一个 vtypes
实例,将它设定为仅匹配字符串类型,并尝试用一个数字类型去匹配它。因为类型不匹配,这个实例就会扔出一个错误。
支持的数据类型
vtypes-only 支持的数据类型列举如下:
'array'
普通数组'typedarray'
数组缓冲区'int8Array'
8 位整形数组'uint8Array'
无符号 8 位整形数组'uint8ClampedArray'
整形数组,0 <= x <= 255'int16Array'
16 位整形数组'uint16Array'
无符号 16 位整形数组'int32Array'
32 位整形数组'uint32Array'
无符号 32 位整形数组'float32Array'
32 位浮点型数组'float64Array'
64 位浮点型数组'number'
数值'string'
字符串'boolean'
布尔值'object'
纯数据对象'null_or_undefined'
是 null 或 undefined 值的数据
编写自定义类型匹配表达式
如果以上的类型表达式不能满足你的需求,你可以考虑编写自定义的类型匹配表达式:
const isFullName = (value) => /^(\w+\s+\w+)(\s+\w+)*$/.test(value) const vName = vtypesOnly(isFullName) vName.check('Jean-Luc Picard') // 正确的调用 vName.check('commander Jean-Luc Picard') // 正确的调用 vName.check('123') // 抛出异常:"Type Error: Expect custom type,but receive '123'"
上述代码中,首先创建一个自定义的类型匹配规则 isFullName
,可以匹配名字和姓氏,和中间多个单词拼接在一起的名字。然后,创建一个 vName
实例,将它设定为匹配这个自定义的类型,最后用这个实例分别去验证不同的数据。如果类型不匹配,就会抛出异常。
总结
vtypes-only 是一个非常有用的 npm 包,能够帮助我们避免类型匹配的问题,有效地提高代码质量。希望这篇文章让你能够更好地学会如何使用 vtypes-only。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fc181e8991b448dd15a