variable-type

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

1. Install

npm i โ€“save variable-type

Then import it.

import VT from 'variable-type';

2. API & Types

Before use it to check variable, you should make your Types.

And the library contains Types below:

The Type has 2 API:

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.

3. Usage examples

Here is some examples. More you can see in test.ts file.

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');
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');
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. 
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. 

// 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.
VT.shape({
  name: VT.string,
  birthday: VT.string,
  sex: VT.string.optional()
}).check({
  name: 'hustcc',
  birthday: '1992-08-01'
}); // Then will get true.

4. Test & Perf

# install dependence
$ npm i

# run unit test
$ npm run test

# run performance test
$ npm run perf

[OPS] variable-type / prop-types = 5.033

License

MIT@hustcc.