typea
Version:
JS 数据结构验证、转换器
179 lines (178 loc) • 4.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.object = exports.toString = exports.array = exports.any = exports.func = exports.symbol = exports.boolean = exports.number = exports.string = void 0;
const createType_js_1 = require("./createType.js");
exports.string = (0, createType_js_1.Type)("string", {
// 验证 string 类型
type(data) {
if (typeof data === 'string') {
return { data };
}
else {
return { error: "值必须为 string 类型" };
}
},
// 限制最小长度
min(data, min) {
if (data.length < min) {
return { error: `值长度不能小于 "${min}" 个字符` };
}
else {
return { data };
}
},
// 限制最大长度
max(data, max) {
if (data.length > max) {
return { error: `值长度不能大于 "${max}" 个字符` };
}
else {
return { data };
}
},
// 正则
reg(data, reg) {
if (data.search(reg) === -1) {
return { error: '正则表达式格式错误' };
}
else {
return { data };
}
},
// 包含
in(data, array) {
const result = array.indexOf(data);
if (result === -1) {
return { error: `值必须为 [${array}] 选项其中之一` };
}
else {
return { data };
}
}
});
(0, createType_js_1.TypeBind)(String, exports.string);
exports.number = (0, createType_js_1.Type)("number", {
type(data) {
if (typeof data === 'number') {
return { data };
}
else {
return { error: '值必须为 number 类型' };
}
},
min(data, min) {
if (data < min) {
return { error: `值不能小于 "${min}"` };
}
else {
return { data };
}
},
max(data, max) {
if (data > max) {
return { error: `值不能大于 "${max}"` };
}
else {
return { data };
}
},
// 匹配多个可选值中的一个
in(data, array) {
const result = array.indexOf(data);
if (result === -1) {
return { error: `值必须为 "${array}" 中的一个` };
}
else {
return { data };
}
}
});
(0, createType_js_1.TypeBind)(Number, exports.number);
exports.boolean = (0, createType_js_1.Type)("boolean", {
type(data) {
if (typeof data === 'boolean') {
return { data };
}
else {
return { error: '值必须为 boolean 类型' };
}
}
});
(0, createType_js_1.TypeBind)(Boolean, exports.boolean);
exports.symbol = (0, createType_js_1.Type)("symbol", {
type(data) {
if (typeof data === 'symbol') {
return { data };
}
else {
return { error: '值必须为 symbol 类型' };
}
}
});
(0, createType_js_1.TypeBind)(Symbol, exports.symbol);
exports.func = (0, createType_js_1.Type)("func", {
type(data) {
if (typeof data === 'function') {
return { data };
}
else {
return { error: '值必须为 function 类型' };
}
}
});
(0, createType_js_1.TypeBind)(Function, exports.func);
exports.any = (0, createType_js_1.Type)("any", {
type(data) { return { data }; }
});
// 结构体数组
exports.array = (0, createType_js_1.Struct)("array", {
type(data) {
if (Array.isArray(data)) {
return { data };
}
else {
return { error: '值必须为 array 类型' };
}
},
min(data, min) {
if (data.length < min) {
return { error: `值长度不能小于 "${min}" 个字符` };
}
else {
return { data };
}
},
max(data, max) {
if (data.length > max) {
return { error: `值长度不能大于 "${max} "个字符` };
}
else {
return { data };
}
}
});
(0, createType_js_1.TypeBind)(Array, exports.array);
exports.toString = Object.prototype.toString;
// 结构体对象
exports.object = (0, createType_js_1.Struct)("object", {
type(data) {
if (exports.toString.call(data) === '[object Object]') {
return { data };
}
else {
return { error: "值必须为 object 类型" };
}
}
});
(0, createType_js_1.TypeBind)(Object, exports.object);
const types = {
string: exports.string,
number: exports.number,
boolean: exports.boolean,
symbol: exports.symbol,
func: exports.func,
any: exports.any,
array: exports.array,
object: exports.object
};
exports.default = types;