A high-performance javascript(
less then 1 kb) library, runtime type checking for variable and similar objects.ไธไธช้ๅธธ็ฎๅ็(ไป 1 kb)้ซๆง่ฝ็็จไบๅๅ้็ปๆๆ ก้ช็ JavaScript ๆจกๅใ
Inspired by prop-types.
npm Version Build Status Coverage Status npm download npm License
npm i --save variable-type
Then import it.
import VT from 'variable-type';
Before use it to check variable, you should make your Types.
And the library contains Types below:
- VT.bool
- VT.func
- VT.number
- VT.string
- VT.object
- VT.array
- VT.any
- VT.null
- VT.undefined
- VT.instanceOf(Class)
- VT.typeOf(String)
- VT.in(Array)
- VT.arrayOf(Type)
- VT.shape(TypeObject)
- VT.and(TypeArray)
- VT.or(TypeArray)
- VT.not(Type)
- VT.apply(Function)
The Type has 2 API:
- check(value)
- optional(): convent the type into optional.
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.
Here is some examples. More you can see in test.ts file.
- Simple usage
VT.number.check(1992); VT.string.check('hustcc'); VT.func.check(Math.min); VT.bool.check(true); VT.object.check({}); VT.array.check([1, 2, 3]); VT.null.check(null); VT.undefined.check(undefined); VT.instanceOf(Date).check(new Date()); VT.in(['hustcc', 'hust', 'cc']).check('hustcc');
- And / Or / Not
VT.not(VT.in(['hustcc', 'cc'])).check('hustcc'); VT.and([ VT.string VT.in(['hustcc', 1992]), ]).check('hustcc'); VT.or([ VT.number, VT.string, ]).check('hustcc');
Arraytype.
const arr = ['hello', 'world', 25, new Date(1992, 8, 1)]; const types = VT.arrayOf( VT.or([ VT.number, VT.string, VT.instanceOf(Date) ]) ); types.check(arr); // will get true.
Objecttype.
const obj = { name: 'hustcc', boy: true, birthday: new Date(1992, 8, 1) }; const types = VT.shape({ name: VT.string, boy: VT.bool, birthday: VT.instanceOf(Date) }); types.check(obj); // will get true.
Complexexample.
// The only API `check`. 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 }) ]) ) }) ]) }) }).check({ a: true, b: 1, c: 'str', d: function() {}, e: new Date(), f: '1', g: { h: { i: [ '1', 2, true, { j: function() {} } ] } } }); // Then will get true.
- Optional type
VT.shape({ name: VT.string, birthday: VT.string, sex: VT.string.optional() }).check({ name: 'hustcc', birthday: '1992-08-01' }); // Then will get true.
# install dependence
$ npm i
# run unit test
$ npm run test
# run performance test
$ npm run perf
[OPS] variable-type / prop-types = 5.033
MIT@hustcc.