Payload-is
轻量级、无依赖的 JavaScript/TypeScript 数据类型校验工具库
Simple, dependency-free data type checking for JavaScript & TypeScript
📝 目录
🧐 简介
Payload-is 提供了一套简洁、直观的 JS/TS 数据类型校验方法,无任何第三方依赖,适用于多种场景。
🏁 快速开始
安装
npm install payload-is
用法示例
import {
isArray,
isEmptyArray,
isFullArray,
isBigInt,
isBigIntObject,
isBigIntArray,
isBoolean,
isTrue,
isFalse,
isBooleanObject,
isArrayBuffer,
isSharedArrayBuffer,
isArrayBufferLike,
isArrayBufferView,
isDataView,
isInt8Array,
isUint8Array,
isUint8ClampedArray,
isInt16Array,
isUint16Array,
isInt32Array,
isUint32Array,
isFloat32Array,
isFloat64Array,
isBigInt64Array,
isBigUint64Array,
isTypedArray,
isSet,
isMap,
isWeakSet,
isWeakMap,
isWeakRef,
isMapEntries,
isDate,
isValidDate,
isInvalidDate,
isBlob,
isFile,
isFormData,
isHeaders,
isRequest,
isResponse,
isError,
isAggregateError,
isEvalError,
isNativeError,
isRangeError,
isReferenceError,
isSyntaxError,
isTypeError,
isURIError,
isFunction,
isAsyncFunction,
isAsyncGeneratorFunction,
isGeneratorFunction,
isAsyncGenerator,
isGenerator,
isAsyncIterable,
isIterable,
isAsyncIterator,
isIterator,
isNil,
isNull,
isUndefined,
isNumber,
isValidNumber,
isInvalidNumber,
isNumberObject,
isNumberArray,
isObject,
isPlainObject,
isEmptyObject,
isFullObject,
isPrimitive,
isPromise,
isPromiseLike,
isRegExp,
isString,
isEmptyString,
isFullString,
isStringObject,
isStringArray,
isSymbol,
isSymbolObject,
getType,
getTag,
getDataType,
isWeakKey,
isPropertyKey,
enumerableKeys,
hasFromJSON,
hasToJSON,
} from "payload-is";
常用示例
数组
isArray([]); // true
isEmptyArray([]); // true
isFullArray([1]); // true
BigInt
isBigInt(1n); // true
isBigIntObject(Object(1n)); // true
isBigIntArray([1n, 2n]); // true
布尔值
isBoolean(true); // true
isBooleanObject(new Boolean(true)); // true
isTrue(true); // true
isFalse(false); // true
Buffer & TypedArray
isArrayBuffer(new ArrayBuffer(32)); // true
isSharedArrayBuffer(new SharedArrayBuffer(32)); // true
isArrayBufferLike(new ArrayBuffer(32)); // true
isArrayBufferLike(new SharedArrayBuffer(32)); // true
isArrayBufferView(new Uint8Array(8)); // true
isDataView(new DataView(new ArrayBuffer(32))); // true
isInt8Array(new Int8Array(32)); // true
isUint8Array(new Uint8Array(32)); // true
isUint8ClampedArray(new Uint8ClampedArray(32)); // true
isInt16Array(new Int16Array(32)); // true
isUint16Array(new Uint16Array(32)); // true
isInt32Array(new Int32Array(32)); // true
isUint32Array(new Uint32Array(32)); // true
isFloat32Array(new Float32Array(32)); // true
isFloat64Array(new Float64Array(32)); // true
isBigInt64Array(new BigInt64Array(32)); // true
isBigUint64Array(new BigUint64Array(32)); // true
isTypedArray(new Int8Array(32)); // true
集合
isSet(new Set()); // true
isMap(new Map()); // true
isWeakSet(new WeakSet()); // true
isWeakMap(new WeakMap()); // true
isWeakRef(new WeakRef({})); // true
isMapEntries([
[1, 2],
[3, 4],
]); // true
日期
isDate(new Date()); // true
isValidDate(new Date(2022, 2, 22)); // true
isInvalidDate(new Date("invalid")); // true
DOM
isBlob(new Blob()); // true
isFile(new File([], "a.txt")); // true
isFormData(new FormData()); // true
isHeaders(new Headers()); // true
isRequest(new Request("https://example.com")); // true
isResponse(new Response()); // true
错误对象
isError(new Error()); // true
isAggregateError(new AggregateError([])); // true
isEvalError(new EvalError()); // true
isRangeError(new RangeError()); // true
isReferenceError(new ReferenceError()); // true
isSyntaxError(new SyntaxError()); // true
isTypeError(new TypeError()); // true
isURIError(new URIError()); // true
isNativeError(new TypeError()); // true
函数
isFunction(function () {}); // true
isAsyncFunction(async function () {}); // true
isGeneratorFunction(function* () {}); // true
isAsyncGeneratorFunction(async function* () {}); // true
Generator
isGenerator((function* () {})()); // true
isAsyncGenerator((async function* () {})()); // true
可迭代对象 & 迭代器
isIterable([]); // true
isAsyncIterable((async function* () {})()); // true
isIterator([].values()); // true
isAsyncIterator((async function* () {})()); // true
Nil
isNil(null); // true
isNil(undefined); // true
isNull(null); // true
isUndefined(undefined); // true
数字
isNumber(10); // true
isValidNumber(10); // true
isInvalidNumber(NaN); // true
isNumberObject(new Number(10)); // true
isNumberArray([1, 2, 3]); // true
对象
isObject({}); // true
isPlainObject({}); // true
isEmptyObject({}); // true
isFullObject({ a: 1 }); // true
原始类型
isPrimitive(1); // true
isPrimitive(null); // true
isPrimitive(undefined); // true
Promise
isPromise(Promise.resolve()); // true
isPromiseLike({ then() {} }); // true
正则表达式
isRegExp(/abc/); // true
字符串
isString(""); // true
isEmptyString(""); // true
isFullString("abc"); // true
isStringObject(new String("abc")); // true
isStringArray(["a", "b"]); // true
Symbol
isSymbol(Symbol()); // true
isSymbolObject(Object(Symbol())); // true
键 & 属性
isWeakKey({}); // true
isPropertyKey("a"); // true
enumerableKeys({ a: 1, b: 2 }); // ['a','b']
JSON 辅助
hasToJSON({
toJSON() {
return 1;
},
}); // true
hasFromJSON(
class {
static fromJSON() {
return new this();
}
},
); // true
🔧 测试
npm run test
✍️ 作者
- @Hong Liu - 创意 & 初始开发