高性能变量结构校验库 variable-type

码农软件 · 软件分类 · 常用工具包 · 2019-08-13 11:27:14

软件介绍

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.

本文地址:https://codercto.com/soft/d/12266.html

Java Servlet & JSP Cookbook

Java Servlet & JSP Cookbook

Bruce W. Perry / O'Reilly Media / 2003-12-1 / USD 49.99

With literally hundreds of examples and thousands of lines of code, the Java Servlet and JSP Cookbook yields tips and techniques that any Java web developer who uses JavaServer Pages or servlets will ......一起来看看 《Java Servlet & JSP Cookbook》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具