简单的高性能变量结构校验模块variable-type

  • 开源协议:MIT
  • 操作系统: Windows Linux OS X
  • 开发语言:Js
  • 项目所有者:hustcc
  • 收录时间:2017-08-23
  • 分享:
编辑评级
3

项目详细介绍

variable-type

一个非常简单的(仅 1 kb)高性能的用于做变量结构校验的 JavaScript 模块。

1. 安装

npm   i   --save   variable-type

 

Then import it.

import   VT   from   variable-type;   //   ES6
var   VT   =   require(variable-type);   //   ES5   with   npm

2. API & Types

The unique API is check(variable, type). 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.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.

3. 使用示例

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.

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.

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.

//   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.

4. Test & Perf

npm   i

npm   run   test

npm   run   perf

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

协议

ISC@hustcc.

标签:常用工具包