一个非常简单的(仅 1 kb)高性能的用于做变量结构校验的 JavaScript 模块。
npm i --save variable-type
Then import it.
import VT from 'variable-type'; // ES6 var VT = require('variable-type'); // ES5 with npm
The unique API is check(variable, type). And the library contains Types below:
check(variable, type)
Types
VT.bool
VT.func
VT.number
VT.string
VT.object
VT.array
VT.any
VT.null
VT.undefined
VT.instanceOf(Class)
VT.in(Array)
VT.arrayOf(Type)
VT.shape(TypeObject)
VT.and(TypeArray)
VT.or(TypeArray)
VT.not(Type)
VT.apply(Function)
You can see all the usage in the test cases file.
If more Types are needed, welcome to send a pull request, or put an issue to me.
send a pull request
Here is some examples. More you can see in test.js file.
Simple usage
VT.check(1992, VT.number); VT.check(‘hustcc’, VT.string); VT.check(Math.min, VT.func); VT.check(true, VT.bool); VT.check({}, VT.object); VT.check([1, 2, 3], VT.array); VT.check(null, VT.null); VT.check(undefined, VT.undefined); VT.check(new Date(), VT.instanceOf(Date)); VT.check(‘hustcc’, VT.in([‘hustcc’, ‘hust’, ‘cc’]));
And / Or / Not
VT.check(‘hustcc’, VT.not(VT.in([‘hustcc’, ‘cc’]))); VT.check(‘hustcc’, VT.and([ VT.string VT.in([‘hustcc’, 1992]), ])); VT.check(‘hustcc’, VT.or([ VT.number, VT.string, ]));
Array type.
Array
var arr = [‘hello’, ‘world’, 25, new Date(1992, 8, 1)]; var types = VT.arrayOf( VT.or([ VT.number, VT.string, VT.instanceOf(Date) ]) );
VT.check(arr, types); // will get true.
Object type.
Object
var obj = { name: ‘hustcc’, boy: true, birthday: new Date(1992, 8, 1) }; var types = VT.shape({ name: VT.string, boy: VT.bool, birthday: VT.instanceOf(Date) });
VT.check(obj, types); // will get true.
Complex example.
Complex
// The only API check. VT.check({ a: true, b: 1, c: ‘str’, d: function() {}, e: new Date(), f: ‘1’, g: { h: { i: [ ‘1’, 2, true, { j: function() {} } ] } } }, VT.shape({ a: VT.bool, b: VT.number, c: VT.string, d: VT.func, e: VT.instanceOf(Date), f: VT.in([1, ‘1’]), g: VT.shape({ h: VT.or([ VT.shape({ i: VT.arrayOf( VT.or([ VT.number, VT.string, VT.bool, VT.shape({ j: VT.func }) ]) ) }) ]) }) }); // Then will get true.
check
npm i npm run test npm run perf
[OPS] variable-type / prop-types = 2.495
ISC@hustcc.