wjk-util 0.0.12 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wjk-util.es.js +1 -1
- package/dist/wjk-util.umd.js +1 -1
- package/package.json +1 -1
- package/types/module/array.d.ts +18 -16
- package/types/module/file.d.ts +6 -6
- package/types/module/finance.d.ts +4 -4
- package/types/module/link.d.ts +4 -4
- package/types/module/math.d.ts +13 -24
- package/types/module/object.d.ts +11 -11
- package/types/module/storage.d.ts +9 -9
- package/types/module/type.d.ts +20 -64
package/dist/wjk-util.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e){return Array.isArray(e)}function n(t){return"object"===e(t)}function r(e){return"function"==typeof e}function o(e){return"string"==typeof e}function c(e){return"number"==typeof e&&!isNaN(e)}function i(e){return"boolean"==typeof e}function u(e){return null===e}function a(e){return void 0===e}function s(e){return!(!u(e)&&!a(e))||(o(e)||t(e)?0===e.length:!!n(e)&&0===Object.keys(e).length)}function l(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]}function f(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");return t<=0?e.slice():e.reduce((e,n)=>e.concat(Array.isArray(n)?f(n,t-1):[n]),[])}function y(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function h(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)}function p(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)}function g(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}function d(e){if(Array.isArray(e)&&0!==e.length)return g(e)/e.length}function m(e,t=/* @__PURE__ */new WeakMap){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof HTMLElement)return e.cloneNode(!0);if(t.has(e))return t.get(e);if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach((e,r)=>{n[r]=m(e,t)}),n}const n={};return t.set(e,n),Object.keys(e).forEach(r=>{n[r]=m(e[r],t)}),n}function v(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t}function E(e){return"object"!=typeof e||null===e?[]:Object.keys(e)}function b(e){return"object"!=typeof e||null===e?[]:Object.values(e)}function w(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)}function A(e,t){return Math.floor(Math.random()*(t-e+1))+e}function j(e
|
|
1
|
+
function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e){return Array.isArray(e)}function n(t){return"object"===e(t)}function r(e){return"function"==typeof e}function o(e){return"string"==typeof e}function c(e){return"number"==typeof e&&!isNaN(e)}function i(e){return"boolean"==typeof e}function u(e){return null===e}function a(e){return void 0===e}function s(e){return!(!u(e)&&!a(e))||(o(e)||t(e)?0===e.length:!!n(e)&&0===Object.keys(e).length)}function l(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]}function f(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");return t<=0?e.slice():e.reduce((e,n)=>e.concat(Array.isArray(n)?f(n,t-1):[n]),[])}function y(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function h(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)}function p(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)}function g(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}function d(e){if(Array.isArray(e)&&0!==e.length)return g(e)/e.length}function m(e,t=/* @__PURE__ */new WeakMap){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof HTMLElement)return e.cloneNode(!0);if(t.has(e))return t.get(e);if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach((e,r)=>{n[r]=m(e,t)}),n}const n={};return t.set(e,n),Object.keys(e).forEach(r=>{n[r]=m(e[r],t)}),n}function v(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t}function E(e){return"object"!=typeof e||null===e?[]:Object.keys(e)}function b(e){return"object"!=typeof e||null===e?[]:Object.values(e)}function w(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)}function A(e,t){return Math.floor(Math.random()*(t-e+1))+e}function j(e){return e*(Math.PI/180)}function x(e){return e*(180/Math.PI)}function L(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function S(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)}function M(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}}function O(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}}function k(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}}function N(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}}function P(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function R(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function I(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})}function U(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)}function C(e,t,n){return e*Math.pow(1+t,n)}export{d as average,y as chunk,N as clearStorage,C as compoundInterest,m as deepClone,j as degreesToRadians,L as distance,U as downloadFile,f as flatten,O as getStorage,e as getType,w as hasKey,t as isArray,i as isBoolean,s as isEmpty,r as isFunction,u as isNull,c as isNumber,n as isObject,o as isString,a as isUndefined,E as keys,h as max,v as merge,p as min,x as radiansToDegrees,A as randomInt,k as removeStorage,S as round,M as setStorage,g as sum,l as unique,P as uploadExcelFile,R as uploadImageFile,I as uploadModelFile,b as values};
|
package/dist/wjk-util.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WJKUtil={})}(this,function(e){"use strict";function t(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function n(e){return Array.isArray(e)}function r(e){return"object"===t(e)}function o(e){return"string"==typeof e}function c(e){return null===e}function i(e){return void 0===e}function a(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}e.average=function(e){if(Array.isArray(e)&&0!==e.length)return a(e)/e.length},e.chunk=function(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},e.
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).WJKUtil={})}(this,function(e){"use strict";function t(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function n(e){return Array.isArray(e)}function r(e){return"object"===t(e)}function o(e){return"string"==typeof e}function c(e){return null===e}function i(e){return void 0===e}function a(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return e.reduce((e,t)=>e+t,0)}e.average=function(e){if(Array.isArray(e)&&0!==e.length)return a(e)/e.length},e.chunk=function(e,t=1){if(!Array.isArray(e))throw new Error("参数必须是数组");if(t<=0)return[];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},e.clearStorage=function(e=!1){try{(e?sessionStorage:localStorage).clear()}catch(t){console.error("清空存储失败:",t)}},e.compoundInterest=function(e,t,n){return e*Math.pow(1+t,n)},e.deepClone=function e(t,n=new WeakMap){if(null===t||"object"!=typeof t)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(t instanceof HTMLElement)return t.cloneNode(!0);if(n.has(t))return n.get(t);if(Array.isArray(t)){const r=[];return n.set(t,r),t.forEach((t,o)=>{r[o]=e(t,n)}),r}const r={};return n.set(t,r),Object.keys(t).forEach(o=>{r[o]=e(t[o],n)}),r},e.degreesToRadians=function(e){return e*(Math.PI/180)},e.distance=function(e,t){const n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)},e.downloadFile=function(e,t,n="application/vnd.ms-excel;charset=utf-8"){const r=document.createElement("a");r.download=t,r.style.display="none";const o=new Blob([e],{type:n});r.href=URL.createObjectURL(o),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(r.href)},e.flatten=function e(t,n=1){if(!Array.isArray(t))throw new Error("参数必须是数组");return n<=0?t.slice():t.reduce((t,r)=>t.concat(Array.isArray(r)?e(r,n-1):[r]),[])},e.getStorage=function(e,t=!1){try{const n=(t?sessionStorage:localStorage).getItem(e);return n?JSON.parse(n):null}catch(n){return console.error("获取存储失败:",n),null}},e.getType=t,e.hasKey=function(e,t){return"object"==typeof e&&null!==e&&e.hasOwnProperty(t)},e.isArray=n,e.isBoolean=function(e){return"boolean"==typeof e},e.isEmpty=function(e){return!(!c(e)&&!i(e))||(o(e)||n(e)?0===e.length:!!r(e)&&0===Object.keys(e).length)},e.isFunction=function(e){return"function"==typeof e},e.isNull=c,e.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},e.isObject=r,e.isString=o,e.isUndefined=i,e.keys=function(e){return"object"!=typeof e||null===e?[]:Object.keys(e)},e.max=function(e){if(Array.isArray(e)&&0!==e.length)return Math.max(...e)},e.merge=function(...e){const t={};return e.forEach(e=>{e&&"object"==typeof e&&Object.keys(e).forEach(n=>{const r=n;void 0!==e[r]&&(t[r]=e[r])})}),t},e.min=function(e){if(Array.isArray(e)&&0!==e.length)return Math.min(...e)},e.radiansToDegrees=function(e){return e*(180/Math.PI)},e.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1))+e},e.removeStorage=function(e,t=!1){try{(t?sessionStorage:localStorage).removeItem(e)}catch(n){console.error("删除存储失败:",n)}},e.round=function(e,t){return Number(Math.round(parseFloat(e+"e"+t))+"e-"+t)},e.setStorage=function(e,t,n=!1){try{(n?sessionStorage:localStorage).setItem(e,JSON.stringify(t))}catch(r){console.error("存储失败:",r)}},e.sum=a,e.unique=function(e){if(!Array.isArray(e))throw new Error("参数必须是数组");return[...new Set(e)]},e.uploadExcelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".xls,.xlsx,.xlsm",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("Excel文件上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadImageFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".jpg,.png,.jpeg,.gif",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("图片上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.uploadModelFile=function(){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=".gltf,.glb",t.click(),t.addEventListener("change",function n(r){const o=r.target,c=o.files?.[0];if(c){const n=c.name.split("."),r=n[n.length-1];t.accept.includes(r)?e(c):(console.error("模型上传格式错误"),e(void 0))}else e(void 0);t.removeEventListener("change",n)})})},e.values=function(e){return"object"!=typeof e||null===e?[]:Object.values(e)},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
package/types/module/array.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 数组去重
|
|
3
|
-
* @param array 待去重数组
|
|
4
|
-
* @returns 去重后的数组
|
|
3
|
+
* @param {array} array 待去重数组
|
|
4
|
+
* @returns {array} 去重后的数组
|
|
5
5
|
* @example
|
|
6
6
|
* unique([1, 2, 2, 3, 4, 4, 5]) // [1, 2, 3, 4, 5]
|
|
7
7
|
* @group Array
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
export declare function unique<T>(array: T[]): T[];
|
|
10
10
|
/**
|
|
11
11
|
* 数组扁平化
|
|
12
|
-
* @param array 待扁平化数组
|
|
13
|
-
* @param depth 扁平化深度,默认为1
|
|
14
|
-
* @returns 扁平化后的数组
|
|
12
|
+
* @param {array} array 待扁平化数组
|
|
13
|
+
* @param {number} depth 扁平化深度,默认为1
|
|
14
|
+
* @returns {array} 扁平化后的数组
|
|
15
15
|
* @example
|
|
16
16
|
* flatten([1, [2, [3, [4, [5]]]]]) // [1, 2, [3, [4, [5]]]]
|
|
17
17
|
* @group Array
|
|
@@ -19,9 +19,9 @@ export declare function unique<T>(array: T[]): T[];
|
|
|
19
19
|
export declare function flatten<T>(array: (T | T[])[], depth?: number): T[];
|
|
20
20
|
/**
|
|
21
21
|
* 数组分块
|
|
22
|
-
* @param array 待分块数组
|
|
23
|
-
* @param size 每块大小
|
|
24
|
-
* @returns 分块后的二维数组
|
|
22
|
+
* @param {array} array 待分块数组
|
|
23
|
+
* @param {number} size 每块大小
|
|
24
|
+
* @returns {array} 分块后的二维数组
|
|
25
25
|
* @example
|
|
26
26
|
* chunk([1, 2, 3, 4, 5, 6, 7, 8], 3) // [[1, 2, 3], [4, 5, 6], [7, 8]]
|
|
27
27
|
* @group Array
|
|
@@ -29,8 +29,8 @@ export declare function flatten<T>(array: (T | T[])[], depth?: number): T[];
|
|
|
29
29
|
export declare function chunk<T>(array: T[], size?: number): T[][];
|
|
30
30
|
/**
|
|
31
31
|
* 获取数组中的最大值
|
|
32
|
-
* @param array 数字数组
|
|
33
|
-
* @returns 最大值
|
|
32
|
+
* @param {array} array 数字数组
|
|
33
|
+
* @returns {number} 最大值
|
|
34
34
|
* @example
|
|
35
35
|
* max([1, 2, 3, 4, 5]) // 5
|
|
36
36
|
* @group Array
|
|
@@ -38,15 +38,17 @@ export declare function chunk<T>(array: T[], size?: number): T[][];
|
|
|
38
38
|
export declare function max(array: number[]): number | undefined;
|
|
39
39
|
/**
|
|
40
40
|
* 获取数组中的最小值
|
|
41
|
-
* @param array 数字数组
|
|
42
|
-
* @returns 最小值
|
|
41
|
+
* @param {array} array 数字数组
|
|
42
|
+
* @returns {number} 最小值
|
|
43
|
+
* @example
|
|
44
|
+
* min([1, 2, 3, 4, 5]) // 1
|
|
43
45
|
* @group Array
|
|
44
46
|
*/
|
|
45
47
|
export declare function min(array: number[]): number | undefined;
|
|
46
48
|
/**
|
|
47
49
|
* 数组求和
|
|
48
|
-
* @param array 数字数组
|
|
49
|
-
* @returns 求和结果
|
|
50
|
+
* @param {array} array 数字数组
|
|
51
|
+
* @returns {number} 求和结果
|
|
50
52
|
* @example
|
|
51
53
|
* sum([1, 2, 3, 4, 5]) // 15
|
|
52
54
|
* @group Array
|
|
@@ -54,8 +56,8 @@ export declare function min(array: number[]): number | undefined;
|
|
|
54
56
|
export declare function sum(array: number[]): number;
|
|
55
57
|
/**
|
|
56
58
|
* 数组平均值
|
|
57
|
-
* @param array 数字数组
|
|
58
|
-
* @returns 平均值
|
|
59
|
+
* @param {array} array 数字数组
|
|
60
|
+
* @returns {number} 平均值
|
|
59
61
|
* @example
|
|
60
62
|
* average([1, 2, 3, 4, 5]) // 3
|
|
61
63
|
* @group Array
|
package/types/module/file.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 上传Excel文件
|
|
3
|
-
* @returns 上传的Excel文件对象
|
|
3
|
+
* @returns {Promise<File | undefined>} 上传的Excel文件对象
|
|
4
4
|
* @example
|
|
5
5
|
* uploadExcelFile().then(file => {
|
|
6
6
|
* if (file) {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
export declare function uploadExcelFile(): Promise<File | undefined>;
|
|
15
15
|
/**
|
|
16
16
|
* 上传图片文件
|
|
17
|
-
* @returns 上传的图片文件对象
|
|
17
|
+
* @returns {Promise<File | undefined>} 上传的图片文件对象
|
|
18
18
|
* @example
|
|
19
19
|
* uploadImageFile().then(file => {
|
|
20
20
|
* if (file) {
|
|
@@ -28,7 +28,7 @@ export declare function uploadExcelFile(): Promise<File | undefined>;
|
|
|
28
28
|
export declare function uploadImageFile(): Promise<File | undefined>;
|
|
29
29
|
/**
|
|
30
30
|
* 上传模型文件
|
|
31
|
-
* @returns 上传的模型文件对象
|
|
31
|
+
* @returns {Promise<File | undefined>} 上传的模型文件对象
|
|
32
32
|
* @example
|
|
33
33
|
* uploadModelFile().then(file => {
|
|
34
34
|
* if (file) {
|
|
@@ -42,9 +42,9 @@ export declare function uploadImageFile(): Promise<File | undefined>;
|
|
|
42
42
|
export declare function uploadModelFile(): Promise<File | undefined>;
|
|
43
43
|
/**
|
|
44
44
|
* 下载文件
|
|
45
|
-
* @param data 文件数据
|
|
46
|
-
* @param name 文件名
|
|
47
|
-
* @param mimeType 文件MIME类型,默认为Excel文件类型
|
|
45
|
+
* @param {string | Blob | ArrayBuffer} data 文件数据
|
|
46
|
+
* @param {string} name 文件名
|
|
47
|
+
* @param {string} mimeType 文件MIME类型,默认为Excel文件类型
|
|
48
48
|
* @example
|
|
49
49
|
* downloadFile('文件内容', 'example.xlsx');
|
|
50
50
|
* @group File
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 复利计算
|
|
3
3
|
* 复利公式:A = P * (1 + r)^n
|
|
4
|
-
* @param principal 本金
|
|
5
|
-
* @param rate 年利率
|
|
6
|
-
* @param times 复利次数
|
|
7
|
-
* @returns 复利金额
|
|
4
|
+
* @param {number} principal 本金
|
|
5
|
+
* @param {number} rate 年利率
|
|
6
|
+
* @param {number} times 复利次数
|
|
7
|
+
* @returns {number} 复利金额
|
|
8
8
|
* @example
|
|
9
9
|
* compoundInterest(10000, 0.05, 5) // 12833.03
|
|
10
10
|
* @group Finance
|
package/types/module/link.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 将 URL 参数转换为 JSON 对象
|
|
3
|
-
* @param url 包含参数的 URL 字符串
|
|
4
|
-
* @returns 转换后的 JSON 对象
|
|
3
|
+
* @param {string} url 包含参数的 URL 字符串
|
|
4
|
+
* @returns {Record<string, string>} 转换后的 JSON 对象
|
|
5
5
|
* @example
|
|
6
6
|
* paramToJson('https://example.com?name=John&age=30') // { name: 'John', age: '30' }
|
|
7
7
|
* @group Link
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export declare function paramToJson(url: string): Record<string, string>;
|
|
10
10
|
/**
|
|
11
11
|
* 将 JSON 对象转换为 URL 参数字符串
|
|
12
|
-
* @param json JSON 对象
|
|
13
|
-
* @returns 转换后的 URL 参数字符串
|
|
12
|
+
* @param {Record<string, any>} json JSON 对象
|
|
13
|
+
* @returns {string} 转换后的 URL 参数字符串
|
|
14
14
|
* @example
|
|
15
15
|
* jsonToParam({ name: 'John', age: 30 }) // 'name=John&age=30'
|
|
16
16
|
* @group Link
|
package/types/module/math.d.ts
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 生成范围内的随机整数
|
|
3
|
-
* @param min 最小值
|
|
4
|
-
* @param max 最大值
|
|
5
|
-
* @returns 随机整数
|
|
3
|
+
* @param {number} min 最小值
|
|
4
|
+
* @param {number} max 最大值
|
|
5
|
+
* @returns {number} 随机整数
|
|
6
6
|
* @example
|
|
7
7
|
* randomInt(1, 10) // 5
|
|
8
8
|
* @group Math
|
|
9
9
|
*/
|
|
10
10
|
export declare function randomInt(min: number, max: number): number;
|
|
11
|
-
/**
|
|
12
|
-
* 限制数值在指定范围内
|
|
13
|
-
* @param value 数值
|
|
14
|
-
* @param min 最小值
|
|
15
|
-
* @param max 最大值
|
|
16
|
-
* @returns 限制后的数值
|
|
17
|
-
* @example
|
|
18
|
-
* clamp(5, 1, 10) // 5
|
|
19
|
-
* @group Math
|
|
20
|
-
*/
|
|
21
|
-
export declare function clamp(value: number, min: number, max: number): number;
|
|
22
11
|
/**
|
|
23
12
|
* 将角度转换为弧度
|
|
24
|
-
* @param degrees 角度
|
|
25
|
-
* @returns 弧度
|
|
13
|
+
* @param {number} degrees 角度
|
|
14
|
+
* @returns {number} 弧度
|
|
26
15
|
* @example
|
|
27
16
|
* degreesToRadians(180) // 3.141592653589793
|
|
28
17
|
* @group Math
|
|
@@ -30,8 +19,8 @@ export declare function clamp(value: number, min: number, max: number): number;
|
|
|
30
19
|
export declare function degreesToRadians(degrees: number): number;
|
|
31
20
|
/**
|
|
32
21
|
* 将弧度转换为角度
|
|
33
|
-
* @param radians 弧度
|
|
34
|
-
* @returns 角度
|
|
22
|
+
* @param {number} radians 弧度
|
|
23
|
+
* @returns {number} 角度
|
|
35
24
|
* @example
|
|
36
25
|
* radiansToDegrees(Math.PI) // 180
|
|
37
26
|
* @group Math
|
|
@@ -39,9 +28,9 @@ export declare function degreesToRadians(degrees: number): number;
|
|
|
39
28
|
export declare function radiansToDegrees(radians: number): number;
|
|
40
29
|
/**
|
|
41
30
|
* 计算两点间距离
|
|
42
|
-
* @param point1 点1 {x, y}
|
|
43
|
-
* @param point2 点2 {x, y}
|
|
44
|
-
* @returns 距离
|
|
31
|
+
* @param {object} point1 点1 {x, y}
|
|
32
|
+
* @param {object} point2 点2 {x, y}
|
|
33
|
+
* @returns {number} 距离
|
|
45
34
|
* @example
|
|
46
35
|
* distance({ x: 0, y: 0 }, { x: 3, y: 4 }) // 5
|
|
47
36
|
* @group Math
|
|
@@ -55,9 +44,9 @@ export declare function distance(point1: {
|
|
|
55
44
|
}): number;
|
|
56
45
|
/**
|
|
57
46
|
* 四舍五入到指定小数位
|
|
58
|
-
* @param value 数值
|
|
59
|
-
* @param decimals 小数位数
|
|
60
|
-
* @returns 四舍五入后的数值
|
|
47
|
+
* @param {number} value 数值
|
|
48
|
+
* @param {number} decimals 小数位数
|
|
49
|
+
* @returns {number} 四舍五入后的数值
|
|
61
50
|
* @example
|
|
62
51
|
* round(1.2345, 2) // 1.23
|
|
63
52
|
* @group Math
|
package/types/module/object.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 深拷贝对象
|
|
3
|
-
* @param obj - 需要深拷贝的对象
|
|
4
|
-
* @param hash - 用于处理循环引用的哈希表
|
|
5
|
-
* @returns 深拷贝后的对象
|
|
3
|
+
* @param {object} obj - 需要深拷贝的对象
|
|
4
|
+
* @param {WeakMap<object, any>} hash - 用于处理循环引用的哈希表
|
|
5
|
+
* @returns {object} 深拷贝后的对象
|
|
6
6
|
* @example
|
|
7
7
|
* deepClone({ a: 1, b: { c: 2 } }) // { a: 1, b: { c: 2 } }
|
|
8
8
|
* @group Object
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
export declare function deepClone<T>(obj: T, hash?: WeakMap<object, any>): T;
|
|
11
11
|
/**
|
|
12
12
|
* 合并对象
|
|
13
|
-
* @param objects 待合并的对象
|
|
13
|
+
* @param {...object} objects 待合并的对象
|
|
14
14
|
* @returns 合并后的对象
|
|
15
15
|
* @example
|
|
16
16
|
* merge({ a: 1, b: 2 }, { b: 3, c: 4 }) // { a: 1, b: 3, c: 4 }
|
|
@@ -19,8 +19,8 @@ export declare function deepClone<T>(obj: T, hash?: WeakMap<object, any>): T;
|
|
|
19
19
|
export declare function merge<T extends Record<string, any>>(...objects: Partial<T>[]): T;
|
|
20
20
|
/**
|
|
21
21
|
* 获取对象的所有键
|
|
22
|
-
* @param obj 对象
|
|
23
|
-
* @returns 键数组
|
|
22
|
+
* @param {object} obj 对象
|
|
23
|
+
* @returns {Array<string>} 键数组
|
|
24
24
|
* @example
|
|
25
25
|
* keys({ a: 1, b: 2 }) // ['a', 'b']
|
|
26
26
|
* @group Object
|
|
@@ -28,8 +28,8 @@ export declare function merge<T extends Record<string, any>>(...objects: Partial
|
|
|
28
28
|
export declare function keys<T extends Record<string, any>>(obj: T): (keyof T)[];
|
|
29
29
|
/**
|
|
30
30
|
* 获取对象的所有值
|
|
31
|
-
* @param obj 对象
|
|
32
|
-
* @returns 值数组
|
|
31
|
+
* @param {object} obj 对象
|
|
32
|
+
* @returns {Array<T[keyof T]>} 值数组
|
|
33
33
|
* @example
|
|
34
34
|
* values({ a: 1, b: 2 }) // [1, 2]
|
|
35
35
|
* @group Object
|
|
@@ -37,9 +37,9 @@ export declare function keys<T extends Record<string, any>>(obj: T): (keyof T)[]
|
|
|
37
37
|
export declare function values<T extends Record<string, any>>(obj: T): T[keyof T][];
|
|
38
38
|
/**
|
|
39
39
|
* 检查对象是否包含某个键
|
|
40
|
-
* @param obj 对象
|
|
41
|
-
* @param key 键名
|
|
42
|
-
* @returns 是否包含该键
|
|
40
|
+
* @param {object} obj 对象
|
|
41
|
+
* @param {PropertyKey} key 键名
|
|
42
|
+
* @returns {boolean} 是否包含该键
|
|
43
43
|
* @example
|
|
44
44
|
* hasKey({ a: 1, b: 2 }, 'a') // true
|
|
45
45
|
* @group Object
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 设置本地存储
|
|
3
|
-
* @param key 键
|
|
4
|
-
* @param value 值
|
|
5
|
-
* @param isSession 是否使用sessionStorage,默认false
|
|
3
|
+
* @param {string} key 键
|
|
4
|
+
* @param {T} value 值
|
|
5
|
+
* @param {boolean} isSession 是否使用sessionStorage,默认false
|
|
6
6
|
* @example
|
|
7
7
|
* setStorage('token', '123456') // 存储token到localStorage
|
|
8
8
|
* setStorage('user', { id: 1, name: '张三' }, true) // 存储用户信息到sessionStorage
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
export declare function setStorage<T>(key: string, value: T, isSession?: boolean): void;
|
|
12
12
|
/**
|
|
13
13
|
* 获取本地存储
|
|
14
|
-
* @param key 键
|
|
15
|
-
* @param isSession 是否使用sessionStorage,默认false
|
|
16
|
-
* @returns 存储的值
|
|
14
|
+
* @param {string} key 键
|
|
15
|
+
* @param {boolean} isSession 是否使用sessionStorage,默认false
|
|
16
|
+
* @returns {T | null} 存储的值
|
|
17
17
|
* @example
|
|
18
18
|
* getStorage('token') // '123456'
|
|
19
19
|
* getStorage('user', true) // { id: 1, name: '张三' }
|
|
@@ -22,8 +22,8 @@ export declare function setStorage<T>(key: string, value: T, isSession?: boolean
|
|
|
22
22
|
export declare function getStorage<T>(key: string, isSession?: boolean): T | null;
|
|
23
23
|
/**
|
|
24
24
|
* 删除本地存储
|
|
25
|
-
* @param key 键
|
|
26
|
-
* @param isSession 是否使用sessionStorage,默认false
|
|
25
|
+
* @param {string} key 键
|
|
26
|
+
* @param {boolean} isSession 是否使用sessionStorage,默认false
|
|
27
27
|
* @example
|
|
28
28
|
* removeStorage('token') // 删除localStorage中的token
|
|
29
29
|
* removeStorage('user', true) // 删除sessionStorage中的user
|
|
@@ -32,7 +32,7 @@ export declare function getStorage<T>(key: string, isSession?: boolean): T | nul
|
|
|
32
32
|
export declare function removeStorage(key: string, isSession?: boolean): void;
|
|
33
33
|
/**
|
|
34
34
|
* 清空本地存储
|
|
35
|
-
* @param isSession 是否使用sessionStorage,默认false
|
|
35
|
+
* @param {boolean} isSession 是否使用sessionStorage,默认false
|
|
36
36
|
* @example
|
|
37
37
|
* clearStorage() // 清空localStorage
|
|
38
38
|
* clearStorage(true) // 清空sessionStorage
|
package/types/module/type.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 检测变量类型
|
|
3
|
-
* @param value 待检测的值
|
|
4
|
-
* @returns 类型字符串
|
|
3
|
+
* @param {unknown} value 待检测的值
|
|
4
|
+
* @returns {string} 类型字符串
|
|
5
5
|
* @example
|
|
6
6
|
* getType({}) // 'object'
|
|
7
7
|
* getType([]) // 'array'
|
|
@@ -15,140 +15,96 @@
|
|
|
15
15
|
export declare function getType(value: unknown): string;
|
|
16
16
|
/**
|
|
17
17
|
* 判断是否为数组
|
|
18
|
-
* @param value 待检测的值
|
|
19
|
-
* @returns
|
|
18
|
+
* @param {unknown} value 待检测的值
|
|
19
|
+
* @returns {boolean} 是否为数组
|
|
20
20
|
* @example
|
|
21
21
|
* isArray([]) // true
|
|
22
|
-
* isArray([1, 2, 3]) // true
|
|
23
|
-
* isArray({}) // false
|
|
24
|
-
* isArray('') // false
|
|
25
|
-
* isArray(0) // false
|
|
26
|
-
* isArray(true) // false
|
|
27
|
-
* isArray(null) // false
|
|
28
22
|
* isArray(undefined) // false
|
|
29
23
|
* @group Type
|
|
30
24
|
*/
|
|
31
25
|
export declare function isArray(value: unknown): value is unknown[];
|
|
32
26
|
/**
|
|
33
27
|
* 判断是否为对象
|
|
34
|
-
* @param value 待检测的值
|
|
35
|
-
* @returns
|
|
28
|
+
* @param {unknown} value 待检测的值
|
|
29
|
+
* @returns {boolean} 是否为对象
|
|
36
30
|
* @example
|
|
37
31
|
* isObject({}) // true
|
|
38
32
|
* isObject({ a: 1, b: 2 }) // true
|
|
39
|
-
* isObject([]) // false
|
|
40
|
-
* isObject('') // false
|
|
41
|
-
* isObject(0) // false
|
|
42
|
-
* isObject(true) // false
|
|
43
|
-
* isObject(null) // false
|
|
44
33
|
* isObject(undefined) // false
|
|
45
34
|
* @group Type
|
|
46
35
|
*/
|
|
47
36
|
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
48
37
|
/**
|
|
49
38
|
* 判断是否为函数
|
|
50
|
-
* @param value 待检测的值
|
|
51
|
-
* @returns
|
|
39
|
+
* @param {unknown} value 待检测的值
|
|
40
|
+
* @returns {boolean} 是否为函数
|
|
52
41
|
* @example
|
|
53
42
|
* isFunction(() => {}) // true
|
|
54
43
|
* isFunction(function () {}) // true
|
|
55
44
|
* isFunction(class {}) // true
|
|
56
45
|
* isFunction({}) // false
|
|
57
|
-
* isFunction([]) // false
|
|
58
|
-
* isFunction('') // false
|
|
59
|
-
* isFunction(0) // false
|
|
60
|
-
* isFunction(true) // false
|
|
61
|
-
* isFunction(null) // false
|
|
62
|
-
* isFunction(undefined) // false
|
|
63
46
|
* @group Type
|
|
64
47
|
*/
|
|
65
48
|
export declare function isFunction(value: unknown): value is Function;
|
|
66
49
|
/**
|
|
67
50
|
* 判断是否为字符串
|
|
68
|
-
* @param value 待检测的值
|
|
69
|
-
* @returns
|
|
51
|
+
* @param {unknown} value 待检测的值
|
|
52
|
+
* @returns {boolean} 是否为字符串
|
|
70
53
|
* @example
|
|
71
|
-
* isString('') // true
|
|
72
54
|
* isString('hello') // true
|
|
73
55
|
* isString(0) // false
|
|
74
|
-
* isString(true) // false
|
|
75
|
-
* isString(null) // false
|
|
76
|
-
* isString(undefined) // false
|
|
77
56
|
* @group Type
|
|
78
57
|
*/
|
|
79
58
|
export declare function isString(value: unknown): value is string;
|
|
80
59
|
/**
|
|
81
60
|
* 判断是否为数字
|
|
82
|
-
* @param value 待检测的值
|
|
83
|
-
* @returns
|
|
61
|
+
* @param {unknown} value 待检测的值
|
|
62
|
+
* @returns {boolean} 是否为数字
|
|
84
63
|
* @example
|
|
85
64
|
* isNumber(0) // true
|
|
86
65
|
* isNumber(123) // true
|
|
87
|
-
* isNumber(-123) // true
|
|
88
|
-
* isNumber(123.456) // true
|
|
89
|
-
* isNumber(-123.456) // true
|
|
90
66
|
* isNumber('123') // false
|
|
91
|
-
* isNumber('123.456') // false
|
|
92
|
-
* isNumber(true) // false
|
|
93
|
-
* isNumber(null) // false
|
|
94
|
-
* isNumber(undefined) // false
|
|
95
67
|
* @group Type
|
|
96
68
|
*/
|
|
97
69
|
export declare function isNumber(value: unknown): value is number;
|
|
98
70
|
/**
|
|
99
71
|
* 判断是否为布尔值
|
|
100
|
-
* @param value 待检测的值
|
|
101
|
-
* @returns
|
|
72
|
+
* @param {unknown} value 待检测的值
|
|
73
|
+
* @returns {boolean} 是否为布尔值
|
|
102
74
|
* @example
|
|
103
75
|
* isBoolean(true) // true
|
|
104
76
|
* isBoolean(false) // true
|
|
105
|
-
* isBoolean(0) // false
|
|
106
77
|
* isBoolean(1) // false
|
|
107
|
-
* isBoolean('true') // false
|
|
108
|
-
* isBoolean('false') // false
|
|
109
|
-
* isBoolean(null) // false
|
|
110
|
-
* isBoolean(undefined) // false
|
|
111
78
|
* @group Type
|
|
112
79
|
*/
|
|
113
80
|
export declare function isBoolean(value: unknown): value is boolean;
|
|
114
81
|
/**
|
|
115
82
|
* 判断是否为null
|
|
116
|
-
* @param value 待检测的值
|
|
117
|
-
* @returns
|
|
83
|
+
* @param {unknown} value 待检测的值
|
|
84
|
+
* @returns {boolean} 是否为null
|
|
118
85
|
* @example
|
|
119
86
|
* isNull(null) // true
|
|
120
87
|
* isNull(undefined) // false
|
|
121
|
-
* isNull('') // false
|
|
122
|
-
* isNull(0) // false
|
|
123
|
-
* isNull(true) // false
|
|
124
88
|
* @group Type
|
|
125
89
|
*/
|
|
126
90
|
export declare function isNull(value: unknown): value is null;
|
|
127
91
|
/**
|
|
128
92
|
* 判断是否为undefined
|
|
129
|
-
* @param value 待检测的值
|
|
130
|
-
* @returns
|
|
93
|
+
* @param {unknown} value 待检测的值
|
|
94
|
+
* @returns {boolean} 是否为undefined
|
|
131
95
|
* @example
|
|
132
96
|
* isUndefined(undefined) // true
|
|
133
97
|
* isUndefined(null) // false
|
|
134
98
|
* isUndefined('') // false
|
|
135
|
-
* isUndefined(0) // false
|
|
136
|
-
* isUndefined(true) // false
|
|
137
99
|
* @group Type
|
|
138
100
|
*/
|
|
139
101
|
export declare function isUndefined(value: unknown): value is undefined;
|
|
140
102
|
/**
|
|
141
103
|
* 判断是否为空(null, undefined, 空字符串, 空数组, 空对象)
|
|
142
|
-
* @param value 待检测的值
|
|
143
|
-
* @returns
|
|
104
|
+
* @param {unknown} value 待检测的值
|
|
105
|
+
* @returns {boolean} 是否为空
|
|
144
106
|
* @example
|
|
145
107
|
* isEmpty(null) // true
|
|
146
|
-
* isEmpty(undefined) // true
|
|
147
|
-
* isEmpty('') // true
|
|
148
|
-
* isEmpty([]) // true
|
|
149
|
-
* isEmpty({}) // true
|
|
150
|
-
* isEmpty('hello') // false
|
|
151
|
-
* isEmpty([1, 2, 3]) // false
|
|
152
108
|
* isEmpty({ a: 1, b: 2 }) // false
|
|
153
109
|
* @group Type
|
|
154
110
|
*/
|