mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-10 00:31:10 +08:00
【同步】前端项目源码
【修复】工作流兼容问题
This commit is contained in:
148
frontend/packages/utils/docs/browser.md
Normal file
148
frontend/packages/utils/docs/browser.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# 浏览器工具函数文档
|
||||
|
||||
这个模块提供了一系列用于浏览器端操作的实用工具函数。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [浏览器环境检测](#浏览器环境检测)
|
||||
2. [浏览器信息获取](#浏览器信息获取)
|
||||
3. [缓存操作](#缓存操作)
|
||||
4. [Cookie 操作](#cookie-操作)
|
||||
5. [Storage 操作](#storage-操作)
|
||||
|
||||
## 浏览器环境检测
|
||||
|
||||
### isHttps
|
||||
|
||||
检查当前页面是否使用 HTTPS 协议。
|
||||
|
||||
```typescript
|
||||
const isSecure = isHttps() // 返回 boolean
|
||||
```
|
||||
|
||||
### isDev
|
||||
|
||||
判断当前是否为开发环境。
|
||||
|
||||
```typescript
|
||||
const isDevelopment = isDev() // 返回 boolean
|
||||
```
|
||||
|
||||
## 浏览器信息获取
|
||||
|
||||
### getBrowserOSInfo
|
||||
|
||||
获取当前浏览器和操作系统信息。
|
||||
|
||||
```typescript
|
||||
const { browser, os } = getBrowserOSInfo()
|
||||
// 返回格式:{ browser: string, os: string }
|
||||
```
|
||||
|
||||
### getScreenInfo
|
||||
|
||||
获取屏幕分辨率和设备像素比信息。
|
||||
|
||||
```typescript
|
||||
const { resolution, scale } = getScreenInfo()
|
||||
// 返回格式:{ resolution: string, scale: number }
|
||||
```
|
||||
|
||||
## 缓存操作
|
||||
|
||||
### forceRefresh
|
||||
|
||||
强制刷新页面并清理所有缓存(包括 Cache API、localStorage 和 sessionStorage)。
|
||||
|
||||
```typescript
|
||||
await forceRefresh()
|
||||
```
|
||||
|
||||
### clearBrowserCache
|
||||
|
||||
清空浏览器所有缓存数据。
|
||||
|
||||
```typescript
|
||||
clearBrowserCache()
|
||||
```
|
||||
|
||||
## Cookie 操作
|
||||
|
||||
### setCookie
|
||||
|
||||
设置 Cookie 值。
|
||||
|
||||
```typescript
|
||||
setCookie(key: string, value: string, days?: number)
|
||||
```
|
||||
|
||||
### getCookie
|
||||
|
||||
获取 Cookie 值。
|
||||
|
||||
```typescript
|
||||
const value = getCookie(key: string) // 返回 string | null
|
||||
```
|
||||
|
||||
### deleteCookie
|
||||
|
||||
删除指定的 Cookie。
|
||||
|
||||
```typescript
|
||||
deleteCookie(key: string)
|
||||
```
|
||||
|
||||
### clearCookie
|
||||
|
||||
清空所有 Cookie。
|
||||
|
||||
```typescript
|
||||
clearCookie()
|
||||
```
|
||||
|
||||
## Storage 操作
|
||||
|
||||
### LocalStorage 操作
|
||||
|
||||
```typescript
|
||||
// 设置数据
|
||||
setLocalItem(key: string, value: any)
|
||||
|
||||
// 获取数据
|
||||
const value = getLocalItem(key: string)
|
||||
|
||||
// 删除数据
|
||||
removeLocalItem(key: string)
|
||||
|
||||
// 清空所有数据
|
||||
clearLocal()
|
||||
```
|
||||
|
||||
### SessionStorage 操作
|
||||
|
||||
```typescript
|
||||
// 设置数据
|
||||
setSessionItem(key: string, value: any)
|
||||
|
||||
// 获取数据
|
||||
const value = getSessionItem(key: string)
|
||||
|
||||
// 删除数据
|
||||
removeSessionItem(key: string)
|
||||
|
||||
// 清空所有数据
|
||||
clearSession()
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 支持数据自动序列化和反序列化
|
||||
4. 提供柯里化版本的函数供函数式编程使用
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. Cookie 操作会自动根据 HTTPS 协议添加前缀
|
||||
2. Storage 操作会自动进行 JSON 序列化和反序列化
|
||||
3. 所有清除缓存的操作都是不可逆的,请谨慎使用
|
||||
219
frontend/packages/utils/docs/business.md
Normal file
219
frontend/packages/utils/docs/business.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# 业务工具函数文档
|
||||
|
||||
这个模块提供了一系列用于业务处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [正则验证](#正则验证)
|
||||
2. [业务操作](#业务操作)
|
||||
3. [代理函数](#代理函数)
|
||||
|
||||
## 正则验证
|
||||
|
||||
### 邮箱验证
|
||||
|
||||
```typescript
|
||||
isEmail(email: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的邮箱地址。使用标准邮箱格式验证,要求包含 `@` 和域名。
|
||||
|
||||
### 手机号验证
|
||||
|
||||
```typescript
|
||||
isPhone(phone: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的中国大陆手机号。要求以 1 开头,第二位为 3-9,总长度为 11 位。
|
||||
|
||||
### 身份证号验证
|
||||
|
||||
```typescript
|
||||
isIdCard(idCard: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的中国大陆身份证号。支持 18 位身份证号码验证,包含生日和校验位检查。
|
||||
|
||||
### URL验证
|
||||
|
||||
```typescript
|
||||
isUrl(url: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的URL。支持 http、https、ftp、rtsp、mms 等协议。
|
||||
|
||||
### IP地址验证
|
||||
|
||||
#### IPv4验证
|
||||
|
||||
```typescript
|
||||
isIpv4(ip: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的IPv4地址。每段数字范围为 0-255,使用更精确的数字范围验证。
|
||||
|
||||
#### IPv6验证
|
||||
|
||||
```typescript
|
||||
isIpv6(ip: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的IPv6地址。支持以下格式:
|
||||
|
||||
- 标准 IPv6 地址
|
||||
- 压缩形式
|
||||
- 混合形式
|
||||
- IPv4 映射到 IPv6
|
||||
- 特殊形式(如 fe80:: 链路本地地址)
|
||||
|
||||
#### 通用IP验证
|
||||
|
||||
```typescript
|
||||
isIp(ip: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的IP地址,同时支持 IPv4 和 IPv6。
|
||||
|
||||
### IP段验证
|
||||
|
||||
```typescript
|
||||
isIps(ips: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的IP段。支持 CIDR 表示法,如 "192.168.1.0/24"。
|
||||
|
||||
### 端口验证
|
||||
|
||||
```typescript
|
||||
isPort(port: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的端口号。范围为 1-65535,使用精确的数字范围验证。
|
||||
|
||||
### MAC地址验证
|
||||
|
||||
```typescript
|
||||
isMac(mac: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否为有效的MAC地址。格式为 XX-XX-XX-XX-XX-XX,其中 X 为十六进制数字。
|
||||
|
||||
### 中文验证
|
||||
|
||||
```typescript
|
||||
isChinese(str: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否只包含中文字符。使用 Unicode 范围 \u4e00-\u9fa5 进行验证。
|
||||
|
||||
## 业务操作
|
||||
|
||||
### 手机号加密
|
||||
|
||||
```typescript
|
||||
encryptPhone(phone: string): string
|
||||
```
|
||||
|
||||
将手机号中间4位替换为星号。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
encryptPhone('13812345678') // 返回: '138****5678'
|
||||
```
|
||||
|
||||
### 身份证号加密
|
||||
|
||||
```typescript
|
||||
encryptIdCard(idCard: string): string
|
||||
```
|
||||
|
||||
将身份证号中间4位替换为星号。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
encryptIdCard('440101199001011234') // 返回: '440101****1234'
|
||||
```
|
||||
|
||||
### 版本号比较
|
||||
|
||||
```typescript
|
||||
compareVersion(version1: string, version2: string): number
|
||||
```
|
||||
|
||||
使用函数式编程方式比较两个版本号的大小。
|
||||
|
||||
- 返回 1: version1 > version2
|
||||
- 返回 -1: version1 < version2
|
||||
- 返回 0: version1 = version2
|
||||
|
||||
特点:
|
||||
|
||||
- 使用 Ramda.js 的 pipe 函数进行函数组合
|
||||
- 自动处理不同长度的版本号
|
||||
- 支持任意深度的版本号比较
|
||||
|
||||
### 字节转换
|
||||
|
||||
```typescript
|
||||
formatBytes(bytes: number, fixed?: number, isUnit?: boolean, endUnit?: string): string
|
||||
formatBytesCurried(bytes: number)(fixed?: number, isUnit?: boolean, endUnit?: string): string
|
||||
```
|
||||
|
||||
将字节数转换为可读的字符串,提供普通版本和柯里化版本。
|
||||
|
||||
参数:
|
||||
|
||||
- `bytes`: 要转换的字节数
|
||||
- `fixed`: 保留小数位数,默认为 2
|
||||
- `isUnit`: 是否显示单位,默认为 true
|
||||
- `endUnit`: 指定结束单位,如果指定则转换到该单位为止
|
||||
|
||||
支持的单位:B、KB、MB、GB、TB
|
||||
|
||||
### 分页字符串转换
|
||||
|
||||
```typescript
|
||||
formatPage(page: string): number
|
||||
```
|
||||
|
||||
从特定格式的字符串中提取分页数量。使用正则表达式匹配 `class='Pcount'>共n条<` 格式的字符串。
|
||||
|
||||
## 代理函数
|
||||
|
||||
### 代理配置生成
|
||||
|
||||
```typescript
|
||||
getProxyConfig(proxyKey: string, usage?: 'query' | 'params'): string | { request_time: number; request_token: string }
|
||||
```
|
||||
|
||||
生成代理请求所需的配置信息。使用 MD5 加密生成请求令牌。
|
||||
|
||||
参数:
|
||||
|
||||
- `proxyKey`: 代理密钥
|
||||
- `usage`: 使用场景
|
||||
- 'params': 返回对象格式
|
||||
- 'query': 返回查询字符串格式
|
||||
|
||||
返回值:
|
||||
|
||||
- params 格式: `{ request_time: number; request_token: string }`
|
||||
- query 格式: `request_time=${time}&request_token=${token}`
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 提供柯里化版本的函数
|
||||
4. 使用精确的正则表达式进行验证
|
||||
5. 支持现代化的 IP 地址格式(包括 IPv6)
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有正则验证函数都使用严格的匹配规则
|
||||
2. 版本号比较支持任意深度的版本号格式
|
||||
3. 字节转换函数支持自定义结束单位
|
||||
4. 代理配置函数仅在开发环境下使用
|
||||
5. 所有函数都经过优化,支持函数式编程范式
|
||||
274
frontend/packages/utils/docs/data.md
Normal file
274
frontend/packages/utils/docs/data.md
Normal file
@@ -0,0 +1,274 @@
|
||||
# 数据处理工具函数文档
|
||||
|
||||
这个模块提供了一系列用于数据处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [数据转换](#数据转换)
|
||||
2. [数据校验](#数据校验)
|
||||
3. [数据过滤与重组](#数据过滤与重组)
|
||||
4. [数据映射](#数据映射)
|
||||
|
||||
## 数据转换
|
||||
|
||||
### 对象值转字符串
|
||||
|
||||
```typescript
|
||||
objectToString(obj: Record<string, any>): Record<string, string>
|
||||
```
|
||||
|
||||
将对象的所有值转换为字符串。使用 Ramda.js 的 `map` 函数进行转换。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
objectToString({ age: 25, score: 98.5 }) // 返回: { age: "25", score: "98.5" }
|
||||
```
|
||||
|
||||
### 数组转对象
|
||||
|
||||
```typescript
|
||||
arrayToObject<T extends Record<string, any>>(key: string, array: T[]): Record<string, T>
|
||||
```
|
||||
|
||||
将数组转换为对象,使用指定的 key 作为新对象的键。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const users = [
|
||||
{ id: '1', name: 'Alice' },
|
||||
{ id: '2', name: 'Bob' },
|
||||
]
|
||||
arrayToObject('id', users) // 返回: { '1': { id: '1', name: 'Alice' }, '2': { id: '2', name: 'Bob' } }
|
||||
```
|
||||
|
||||
### 对象深度扁平化
|
||||
|
||||
```typescript
|
||||
flattenObject<T extends Record<string, any>>(obj: T): Record<string, any>
|
||||
```
|
||||
|
||||
将嵌套的对象结构扁平化,使用点号连接键名。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const nested = {
|
||||
user: {
|
||||
info: {
|
||||
name: 'Alice',
|
||||
age: 25,
|
||||
},
|
||||
},
|
||||
}
|
||||
flattenObject(nested) // 返回: { 'user.info.name': 'Alice', 'user.info.age': 25 }
|
||||
```
|
||||
|
||||
## 数据校验
|
||||
|
||||
### 正则匹配验证
|
||||
|
||||
```typescript
|
||||
matchesPattern<T extends RegExp>(pattern: T, str: string): boolean
|
||||
```
|
||||
|
||||
验证字符串是否符合指定的正则表达式模式。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const isEmail = matchesPattern(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)
|
||||
isEmail('test@example.com') // 返回: true
|
||||
```
|
||||
|
||||
### 必需键验证
|
||||
|
||||
```typescript
|
||||
hasRequiredKeys<T extends Record<string, any>>(requiredKeys: string[], obj: T): boolean
|
||||
```
|
||||
|
||||
验证对象是否包含所有指定的必需键。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const requiredFields = ['name', 'email']
|
||||
hasRequiredKeys(requiredFields, { name: 'Alice', email: 'alice@example.com' }) // 返回: true
|
||||
```
|
||||
|
||||
### 数值范围验证
|
||||
|
||||
```typescript
|
||||
isInRange<T extends number>(min: T, max: T, value: T): boolean
|
||||
```
|
||||
|
||||
验证数值是否在指定的范围内。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const isValidAge = isInRange(0, 120)
|
||||
isValidAge(25) // 返回: true
|
||||
```
|
||||
|
||||
## 数据过滤与重组
|
||||
|
||||
### 对象属性过滤
|
||||
|
||||
```typescript
|
||||
filterObject<T extends Record<string, any>>(predicate: (value: any) => boolean, obj: T): Record<string, any>
|
||||
```
|
||||
|
||||
根据条件函数过滤对象的属性。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const removeEmpty = filterObject((value) => value !== '')
|
||||
removeEmpty({ name: 'Alice', title: '', age: 25 }) // 返回: { name: 'Alice', age: 25 }
|
||||
```
|
||||
|
||||
### 数组分组
|
||||
|
||||
```typescript
|
||||
groupByKey<T extends Record<string, any>>(key: string, array: T[]): Record<string, T[]>
|
||||
```
|
||||
|
||||
按照指定的键对数组进行分组。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const users = [
|
||||
{ role: 'admin', name: 'Alice' },
|
||||
{ role: 'user', name: 'Bob' },
|
||||
{ role: 'admin', name: 'Charlie' },
|
||||
]
|
||||
groupByKey('role', users)
|
||||
// 返回: {
|
||||
// admin: [{ role: 'admin', name: 'Alice' }, { role: 'admin', name: 'Charlie' }],
|
||||
// user: [{ role: 'user', name: 'Bob' }]
|
||||
// }
|
||||
```
|
||||
|
||||
### 深层属性提取
|
||||
|
||||
```typescript
|
||||
pluckDeep<T extends Record<string, any>>(path: string[], list: T[]): T[]
|
||||
```
|
||||
|
||||
从对象数组中提取指定路径的值。提供柯里化支持。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const users = [{ info: { name: 'Alice', age: 25 } }, { info: { name: 'Bob', age: 30 } }]
|
||||
pluckDeep(['info', 'name'], users) // 返回: ['Alice', 'Bob']
|
||||
```
|
||||
|
||||
### 数组扁平化去重
|
||||
|
||||
```typescript
|
||||
flattenAndUniq<T>(array: T[]): T[]
|
||||
```
|
||||
|
||||
对嵌套数组进行扁平化处理并去除重复元素。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
flattenAndUniq([
|
||||
[1, 2],
|
||||
[2, 3],
|
||||
[3, 4],
|
||||
]) // 返回: [1, 2, 3, 4]
|
||||
```
|
||||
|
||||
## 数据映射
|
||||
|
||||
### 对象映射
|
||||
|
||||
```typescript
|
||||
mapData(
|
||||
mapper: [string, string][] | Record<string, string>,
|
||||
data: Record<string, unknown> | Record<string, unknown>[],
|
||||
options: MapperOption = { deep: true }
|
||||
): Record<string, unknown> | Record<string, unknown>[]
|
||||
```
|
||||
|
||||
根据映射表将对象或数组映射为新的数据结构。
|
||||
|
||||
参数:
|
||||
|
||||
- `mapper`: 映射表,可以是键值对数组或对象
|
||||
- `data`: 要映射的数据,可以是对象或对象数组
|
||||
- `options`: 映射选项
|
||||
- `inherit`: 要继承的字段数组
|
||||
- `deep`: 是否深度映射(默认 true)
|
||||
- `ignore`: 要忽略的字段数组
|
||||
|
||||
特点:
|
||||
|
||||
- 支持深度映射
|
||||
- 支持字段继承和忽略
|
||||
- 支持嵌套路径映射
|
||||
- 自动处理数组数据
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const mapper = {
|
||||
'user.name': 'userName',
|
||||
'user.age': 'userAge',
|
||||
}
|
||||
const data = {
|
||||
user: {
|
||||
name: 'Alice',
|
||||
age: 25,
|
||||
},
|
||||
}
|
||||
mapData(mapper, data) // 返回: { userName: 'Alice', userAge: 25 }
|
||||
|
||||
// 使用继承选项
|
||||
mapData(mapper, data, { inherit: ['user.name'] })
|
||||
// 返回: { userName: 'Alice' }
|
||||
|
||||
// 使用忽略选项,或者在映射表中直接忽略,如果未启用
|
||||
mapData(mapper, data, { ignore: ['user.age'] })
|
||||
// 返回: { userName: 'Alice' }
|
||||
```
|
||||
|
||||
### 生成映射表
|
||||
|
||||
```typescript
|
||||
generateMapper(obj: Record<string, unknown>): [string, unknown][]
|
||||
```
|
||||
|
||||
将对象的所有字段转换为小驼峰格式的映射表。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const obj = {
|
||||
user_name: 'name',
|
||||
user_age: 'age',
|
||||
}
|
||||
generateMapper(obj) // 返回: [['userName', 'name'], ['userAge', 'age']]
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 所有函数都提供柯里化支持
|
||||
4. 支持深层数据结构处理
|
||||
5. 提供丰富的数据验证方法
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有函数都是纯函数,不会修改原始数据
|
||||
2. 对象扁平化会处理所有层级的嵌套
|
||||
3. 数组转对象时要确保指定的 key 在数组对象中存在
|
||||
4. 数据映射的 inherit 和 ignore 选项不能同时使用
|
||||
5. 映射表中的路径必须存在于源数据中
|
||||
198
frontend/packages/utils/docs/date.md
Normal file
198
frontend/packages/utils/docs/date.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# 日期处理工具函数文档
|
||||
|
||||
这个模块提供了一系列用于日期处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [日期格式化](#日期格式化)
|
||||
2. [日期计算](#日期计算)
|
||||
3. [日期判断](#日期判断)
|
||||
4. [时间获取](#时间获取)
|
||||
|
||||
## 日期格式化
|
||||
|
||||
### 日期格式化
|
||||
|
||||
```typescript
|
||||
formatDate(date: string | number | Date, format: string = 'YYYY-MM-DD HH:mm:ss'): string
|
||||
```
|
||||
|
||||
将日期转换为指定格式的字符串。
|
||||
|
||||
参数:
|
||||
|
||||
- `date`: 日期字符串、时间戳或 Date 对象
|
||||
- `format`: 格式化字符串,默认为 'YYYY-MM-DD HH:mm:ss'
|
||||
|
||||
支持的格式化占位符:
|
||||
|
||||
- YYYY: 年份
|
||||
- MM: 月份(01-12)
|
||||
- DD: 日期(01-31)
|
||||
- HH: 小时(00-23)
|
||||
- mm: 分钟(00-59)
|
||||
- ss: 秒钟(00-59)
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
formatDate(new Date(), 'YYYY-MM-DD') // 返回: '2024-02-27'
|
||||
formatDate('2024-02-27 14:30:00', 'MM/DD HH:mm') // 返回: '02/27 14:30'
|
||||
```
|
||||
|
||||
### 相对时间格式化
|
||||
|
||||
```typescript
|
||||
formatRelativeTime(date: string | number | Date): string
|
||||
```
|
||||
|
||||
将日期转换为相对时间描述。
|
||||
|
||||
返回格式:
|
||||
|
||||
- 1分钟内:'刚刚'
|
||||
- 1小时内:'x分钟前'
|
||||
- 24小时内:'x小时前'
|
||||
- 30天内:'x天前'
|
||||
- 超过30天:显示具体日期(YYYY-MM-DD)
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
formatRelativeTime(new Date()) // 返回: '刚刚'
|
||||
formatRelativeTime(Date.now() - 3600000) // 返回: '1小时前'
|
||||
```
|
||||
|
||||
## 日期计算
|
||||
|
||||
### 天数差计算
|
||||
|
||||
```typescript
|
||||
getDaysDiff(startDate: string | number | Date, endDate: string | number | Date): number
|
||||
getDaysDiffCurried(startDate: string | number | Date)(endDate: string | number | Date): number
|
||||
```
|
||||
|
||||
计算两个日期之间的天数差。提供普通版本和柯里化版本。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getDaysDiff('2024-02-01', '2024-02-27') // 返回: 26
|
||||
const diffFromToday = getDaysDiffCurried(new Date())
|
||||
diffFromToday('2024-03-27') // 返回: 30
|
||||
```
|
||||
|
||||
### 添加天数
|
||||
|
||||
```typescript
|
||||
addDays(days: number, date: string | number | Date): Date
|
||||
addDaysCurried(days: number)(date: string | number | Date): Date
|
||||
```
|
||||
|
||||
在指定日期上添加或减少天数。提供普通版本和柯里化版本。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
addDays(7, new Date()) // 返回: 7天后的日期
|
||||
addDays(-7, new Date()) // 返回: 7天前的日期
|
||||
```
|
||||
|
||||
## 日期判断
|
||||
|
||||
### 日期范围判断
|
||||
|
||||
```typescript
|
||||
isDateInRange(date: string | number | Date, startDate: string | number | Date, endDate: string | number | Date): boolean
|
||||
isDateInRangeCurried(date: string | number | Date)(startDate: string | number | Date)(endDate: string | number | Date): boolean
|
||||
```
|
||||
|
||||
判断日期是否在指定范围内。提供普通版本和柯里化版本。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isDateInRange('2024-02-27', '2024-02-01', '2024-03-01') // 返回: true
|
||||
const checkDateRange = isDateInRangeCurried('2024-02-27')
|
||||
checkDateRange('2024-02-01')('2024-03-01') // 返回: true
|
||||
```
|
||||
|
||||
## 时间获取
|
||||
|
||||
### 获取一天的开始时间
|
||||
|
||||
```typescript
|
||||
getStartOfDay(date: string | number | Date): Date
|
||||
```
|
||||
|
||||
获取指定日期的开始时间(00:00:00)。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getStartOfDay('2024-02-27 15:30:00') // 返回: 2024-02-27 00:00:00
|
||||
```
|
||||
|
||||
### 获取一天的结束时间
|
||||
|
||||
```typescript
|
||||
getEndOfDay(date: string | number | Date): Date
|
||||
```
|
||||
|
||||
获取指定日期的结束时间(23:59:59.999)。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getEndOfDay('2024-02-27 15:30:00') // 返回: 2024-02-27 23:59:59.999
|
||||
```
|
||||
|
||||
### 获取星期几
|
||||
|
||||
```typescript
|
||||
getDayOfWeek(date: string | number | Date): string
|
||||
```
|
||||
|
||||
获取指定日期是星期几。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getDayOfWeek('2024-02-27') // 返回: '星期二'
|
||||
```
|
||||
|
||||
### 获取到期时间
|
||||
|
||||
```typescript
|
||||
getDaysUntilExpiration(date: string | number | Date, expirationDate?: string | number | Date): string
|
||||
```
|
||||
|
||||
获取距离到期时间的天数。
|
||||
|
||||
参数:
|
||||
|
||||
- `date`: 目标日期
|
||||
- `expirationDate`: 到期日期,默认为当前时间
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getDaysUntilExpiration('2024-03-27') // 返回: '30天'
|
||||
getDaysUntilExpiration('2024-01-27') // 返回: '已过期'
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 提供多个函数的柯里化版本
|
||||
4. 支持多种日期输入格式
|
||||
5. 丰富的日期处理功能
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有接收日期的函数都支持字符串、时间戳和 Date 对象作为输入
|
||||
2. 日期格式化函数会自动补零,确保输出格式统一
|
||||
3. 天数差计算会忽略时分秒,只计算日期差
|
||||
4. 范围判断包含起始和结束日期
|
||||
5. 使用柯里化函数时注意参数顺序
|
||||
132
frontend/packages/utils/docs/encipher.md
Normal file
132
frontend/packages/utils/docs/encipher.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# 加密解密工具函数文档
|
||||
|
||||
这个模块提供了一系列用于加密解密的实用工具函数。该模块使用 JSEncrypt 库实现 RSA 加密解密功能。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [密钥对生成](#密钥对生成)
|
||||
2. [RSA 加密](#rsa-加密)
|
||||
3. [RSA 解密](#rsa-解密)
|
||||
|
||||
## 密钥对生成
|
||||
|
||||
### 生成 RSA 密钥对
|
||||
|
||||
```typescript
|
||||
generateKeyPair(): { publicKey: string, privateKey: string }
|
||||
```
|
||||
|
||||
生成一对 RSA 公私钥。
|
||||
|
||||
返回值:
|
||||
|
||||
- 包含公钥和私钥的对象
|
||||
- `publicKey`: RSA 公钥
|
||||
- `privateKey`: RSA 私钥
|
||||
|
||||
特点:
|
||||
|
||||
- 使用 2048 位密钥长度
|
||||
- 返回标准 PEM 格式的密钥对
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const { publicKey, privateKey } = generateKeyPair()
|
||||
// publicKey: '-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----'
|
||||
// privateKey: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
|
||||
```
|
||||
|
||||
## RSA 加密
|
||||
|
||||
### RSA 加密函数
|
||||
|
||||
```typescript
|
||||
rsaEncrypt(str: string, publicKey: string): string
|
||||
```
|
||||
|
||||
使用 RSA 公钥对字符串进行加密。
|
||||
|
||||
参数:
|
||||
|
||||
- `str`: 需要加密的字符串
|
||||
- `publicKey`: RSA 公钥
|
||||
|
||||
返回值:
|
||||
|
||||
- 加密后的字符串
|
||||
|
||||
注意事项:
|
||||
|
||||
- 如果公钥长度小于 10,将直接返回原字符串
|
||||
- 使用 JSEncrypt 库进行加密操作
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const publicKey = '-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----'
|
||||
const encrypted = rsaEncrypt('hello world', publicKey)
|
||||
```
|
||||
|
||||
## RSA 解密
|
||||
|
||||
### RSA 解密函数
|
||||
|
||||
```typescript
|
||||
rsaDecrypt(str: string, privateKey: string): string
|
||||
```
|
||||
|
||||
使用 RSA 私钥对加密字符串进行解密。
|
||||
|
||||
参数:
|
||||
|
||||
- `str`: 需要解密的字符串
|
||||
- `privateKey`: RSA 私钥
|
||||
|
||||
返回值:
|
||||
|
||||
- 解密后的原始字符串
|
||||
|
||||
注意事项:
|
||||
|
||||
- 如果私钥长度小于 10,将直接返回原字符串
|
||||
- 使用 JSEncrypt 库进行解密操作
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const privateKey = '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
|
||||
const decrypted = rsaDecrypt(encrypted, privateKey)
|
||||
```
|
||||
|
||||
## 完整使用示例
|
||||
|
||||
```typescript
|
||||
// 1. 生成密钥对
|
||||
const { publicKey, privateKey } = generateKeyPair()
|
||||
|
||||
// 2. 使用公钥加密数据
|
||||
const message = 'Hello, World!'
|
||||
const encrypted = rsaEncrypt(message, publicKey)
|
||||
|
||||
// 3. 使用私钥解密数据
|
||||
const decrypted = rsaDecrypt(encrypted, privateKey)
|
||||
console.log(decrypted) // 输出: 'Hello, World!'
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 基于 JSEncrypt 库实现 RSA 加密解密
|
||||
3. 提供简单易用的 API
|
||||
4. 内置密钥长度验证
|
||||
5. 支持标准 RSA 密钥格式
|
||||
6. 提供密钥对生成功能
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 使用前需要准备好 RSA 公私钥对,或使用 generateKeyPair 生成
|
||||
2. 密钥必须符合标准 RSA 密钥格式
|
||||
3. 建议在 HTTPS 环境下使用
|
||||
4. 注意保护好私钥,不要在客户端存储
|
||||
5. 加密数据有长度限制,取决于 RSA 密钥长度(2048 位)
|
||||
135
frontend/packages/utils/docs/random.md
Normal file
135
frontend/packages/utils/docs/random.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# 随机数生成工具函数文档
|
||||
|
||||
这个模块提供了一系列用于生成随机数和随机字符串的工具函数。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [随机数生成](#随机数生成)
|
||||
2. [随机字符串生成](#随机字符串生成)
|
||||
|
||||
## 随机数生成
|
||||
|
||||
### 随机整数生成
|
||||
|
||||
```typescript
|
||||
randomInt(min: number, max: number): number
|
||||
```
|
||||
|
||||
生成指定范围内的随机整数。
|
||||
|
||||
参数:
|
||||
|
||||
- `min`: 最小值(包含)
|
||||
- `max`: 最大值(包含)
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
randomInt(1, 10) // 返回: 1-10 之间的随机整数
|
||||
```
|
||||
|
||||
## 随机字符串生成
|
||||
|
||||
### 基础随机字符串
|
||||
|
||||
```typescript
|
||||
randomChart(
|
||||
length: number = 32,
|
||||
options: {
|
||||
isSpecial?: boolean;
|
||||
isLower?: boolean;
|
||||
isUpper?: boolean;
|
||||
isNumber?: boolean;
|
||||
} = {}
|
||||
): string
|
||||
```
|
||||
|
||||
生成指定长度的随机字符串。
|
||||
|
||||
参数:
|
||||
|
||||
- `length`: 字符串长度(默认 32)
|
||||
- `options`: 配置选项
|
||||
- `isSpecial`: 是否包含特殊字符(默认 false)
|
||||
- `isLower`: 是否包含小写字母(默认 true)
|
||||
- `isUpper`: 是否包含大写字母(默认 true)
|
||||
- `isNumber`: 是否包含数字(默认 true)
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
// 生成默认随机字符串
|
||||
randomChart() // 返回: 32位随机字符串
|
||||
|
||||
// 生成包含特殊字符的随机字符串
|
||||
randomChart(16, { isSpecial: true })
|
||||
|
||||
// 仅生成数字和大写字母
|
||||
randomChart(8, { isLower: false })
|
||||
```
|
||||
|
||||
### 高级随机字符串
|
||||
|
||||
```typescript
|
||||
randomChartWithMinLength(
|
||||
length: number = 32,
|
||||
options: {
|
||||
minUpper?: number;
|
||||
minLower?: number;
|
||||
minNumber?: number;
|
||||
minSpecial?: number;
|
||||
}
|
||||
): string
|
||||
```
|
||||
|
||||
生成满足最小字符数要求的随机字符串。
|
||||
|
||||
参数:
|
||||
|
||||
- `length`: 字符串总长度(默认 32)
|
||||
- `options`: 最小字符数要求
|
||||
- `minUpper`: 大写字母最小个数(默认 1)
|
||||
- `minLower`: 小写字母最小个数(默认 1)
|
||||
- `minNumber`: 数字最小个数(默认 1)
|
||||
- `minSpecial`: 特殊字符最小个数(默认 0)
|
||||
|
||||
特点:
|
||||
|
||||
- 确保生成的字符串满足各类字符的最小数量要求
|
||||
- 自动打乱字符顺序
|
||||
- 支持特殊字符
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
// 生成包含至少2个大写字母、2个小写字母、2个数字的16位随机字符串
|
||||
randomChartWithMinLength(16, {
|
||||
minUpper: 2,
|
||||
minLower: 2,
|
||||
minNumber: 2,
|
||||
})
|
||||
|
||||
// 生成包含特殊字符的安全密码
|
||||
randomChartWithMinLength(12, {
|
||||
minUpper: 1,
|
||||
minLower: 1,
|
||||
minNumber: 1,
|
||||
minSpecial: 1,
|
||||
})
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 支持灵活的字符组合配置
|
||||
3. 提供基础和高级两种随机字符串生成方式
|
||||
4. 支持最小字符数量要求
|
||||
5. 自动字符顺序打乱
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 随机数范围包含最小值和最大值
|
||||
2. 字符串生成会自动过滤掉易混淆的字符(0oO1Ii)
|
||||
3. 最小字符数要求总和不能超过总长度
|
||||
4. 特殊字符集合为 !@#$%^&\*?
|
||||
5. 建议在需要安全性的场景使用 randomChartWithMinLength
|
||||
139
frontend/packages/utils/docs/string.md
Normal file
139
frontend/packages/utils/docs/string.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# 字符串处理工具函数文档
|
||||
|
||||
这个模块提供了一系列用于字符串处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [URL 处理](#url-处理)
|
||||
2. [HTML 转义](#html-转义)
|
||||
3. [命名格式转换](#命名格式转换)
|
||||
|
||||
## URL 处理
|
||||
|
||||
### URL 参数转对象
|
||||
|
||||
```typescript
|
||||
urlToObject(url: string): Record<string, string>
|
||||
urlToObjectCurried(url: string): Record<string, string>
|
||||
```
|
||||
|
||||
将 URL 字符串中的查询参数转换为对象。提供普通版本和柯里化版本。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
const url = 'https://example.com?name=Alice&age=25'
|
||||
urlToObject(url) // 返回: { name: 'Alice', age: '25' }
|
||||
|
||||
const parseUrl = urlToObjectCurried('https://example.com?name=Alice&age=25')
|
||||
parseUrl // 返回: { name: 'Alice', age: '25' }
|
||||
```
|
||||
|
||||
## HTML 转义
|
||||
|
||||
### HTML 字符转义
|
||||
|
||||
```typescript
|
||||
htmlEscape(str: string, isReverse: boolean = false): string
|
||||
```
|
||||
|
||||
对 HTML 字符串进行转义或反转义。
|
||||
|
||||
参数:
|
||||
|
||||
- `str`: 要转义的字符串
|
||||
- `isReverse`: 是否进行反转义(默认 false)
|
||||
|
||||
支持的转义字符:
|
||||
|
||||
- & -> &
|
||||
- < -> <
|
||||
- > -> >
|
||||
- " -> "
|
||||
- ' -> '
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
// 转义
|
||||
htmlEscape('<div>Hello & World</div>')
|
||||
// 返回: '<div>Hello & World</div>'
|
||||
|
||||
// 反转义
|
||||
htmlEscape('<div>Hello & World</div>', true)
|
||||
// 返回: '<div>Hello & World</div>'
|
||||
```
|
||||
|
||||
## 命名格式转换
|
||||
|
||||
### 小驼峰转下划线
|
||||
|
||||
```typescript
|
||||
camelToUnderline(str: string): string
|
||||
```
|
||||
|
||||
将小驼峰命名转换为下划线命名。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
camelToUnderline('userName') // 返回: 'user_name'
|
||||
```
|
||||
|
||||
### 下划线转小驼峰
|
||||
|
||||
```typescript
|
||||
underlineToCamel(str: string): string
|
||||
```
|
||||
|
||||
将下划线命名转换为小驼峰命名。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
underlineToCamel('user_name') // 返回: 'userName'
|
||||
```
|
||||
|
||||
### 下划线转大驼峰
|
||||
|
||||
```typescript
|
||||
underlineToBigCamel(str: string): string
|
||||
```
|
||||
|
||||
将下划线命名转换为大驼峰命名。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
underlineToBigCamel('user_name') // 返回: 'UserName'
|
||||
```
|
||||
|
||||
### 大驼峰转下划线
|
||||
|
||||
```typescript
|
||||
bigCamelToUnderline(str: string): string
|
||||
```
|
||||
|
||||
将大驼峰命名转换为下划线命名。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
bigCamelToUnderline('UserName') // 返回: 'user_name'
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 提供 URL 参数解析的柯里化版本
|
||||
4. 支持 HTML 字符的双向转义
|
||||
5. 提供完整的命名格式转换工具
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. URL 解析使用标准的 URL API
|
||||
2. HTML 转义支持最常用的五种字符
|
||||
3. 命名格式转换保持原字符串的大小写特性
|
||||
4. 柯里化函数便于函数组合
|
||||
5. 所有函数都是纯函数,不会修改原始数据
|
||||
247
frontend/packages/utils/docs/type.md
Normal file
247
frontend/packages/utils/docs/type.md
Normal file
@@ -0,0 +1,247 @@
|
||||
# 类型检查工具函数文档
|
||||
|
||||
这个模块提供了一系列用于数据类型检查的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [基础类型检查](#基础类型检查)
|
||||
2. [复杂类型检查](#复杂类型检查)
|
||||
3. [特殊类型检查](#特殊类型检查)
|
||||
4. [类型获取](#类型获取)
|
||||
|
||||
## 基础类型检查
|
||||
|
||||
### 数字类型检查
|
||||
|
||||
```typescript
|
||||
isNumber(value: unknown): value is number
|
||||
```
|
||||
|
||||
检查值是否为数字类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isNumber(123) // 返回: true
|
||||
isNumber('123') // 返回: false
|
||||
```
|
||||
|
||||
### 字符串类型检查
|
||||
|
||||
```typescript
|
||||
isString(value: unknown): value is string
|
||||
```
|
||||
|
||||
检查值是否为字符串类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isString('hello') // 返回: true
|
||||
isString(123) // 返回: false
|
||||
```
|
||||
|
||||
### 布尔类型检查
|
||||
|
||||
```typescript
|
||||
isBoolean(value: unknown): value is boolean
|
||||
```
|
||||
|
||||
检查值是否为布尔类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isBoolean(true) // 返回: true
|
||||
isBoolean('true') // 返回: false
|
||||
```
|
||||
|
||||
## 复杂类型检查
|
||||
|
||||
### 对象类型检查
|
||||
|
||||
```typescript
|
||||
isObject(value: unknown): value is object
|
||||
```
|
||||
|
||||
检查值是否为对象类型(不包括数组)。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isObject({}) // 返回: true
|
||||
isObject([]) // 返回: false
|
||||
```
|
||||
|
||||
### 数组类型检查
|
||||
|
||||
```typescript
|
||||
isArray(value: unknown): value is any[]
|
||||
```
|
||||
|
||||
检查值是否为数组类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isArray([1, 2, 3]) // 返回: true
|
||||
isArray({ length: 3 }) // 返回: false
|
||||
```
|
||||
|
||||
### 函数类型检查
|
||||
|
||||
```typescript
|
||||
isFunction(value: unknown): value is Function
|
||||
```
|
||||
|
||||
检查值是否为函数类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isFunction(() => {}) // 返回: true
|
||||
isFunction({}) // 返回: false
|
||||
```
|
||||
|
||||
## 特殊类型检查
|
||||
|
||||
### Promise 类型检查
|
||||
|
||||
```typescript
|
||||
isPromise(value: unknown): value is Promise<unknown>
|
||||
```
|
||||
|
||||
检查值是否为 Promise 类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isPromise(Promise.resolve()) // 返回: true
|
||||
isPromise({ then: () => {} }) // 返回: false
|
||||
```
|
||||
|
||||
### 正则表达式检查
|
||||
|
||||
```typescript
|
||||
isRegExp(value: unknown): value is RegExp
|
||||
```
|
||||
|
||||
检查值是否为正则表达式。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isRegExp(/test/) // 返回: true
|
||||
isRegExp('test') // 返回: false
|
||||
```
|
||||
|
||||
### 日期类型检查
|
||||
|
||||
```typescript
|
||||
isDate(value: unknown): value is Date
|
||||
```
|
||||
|
||||
检查值是否为日期类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isDate(new Date()) // 返回: true
|
||||
isDate('2024-02-27') // 返回: false
|
||||
```
|
||||
|
||||
### null 检查
|
||||
|
||||
```typescript
|
||||
isNull(value: unknown): value is null
|
||||
```
|
||||
|
||||
检查值是否为 null(与 undefined 区分)。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isNull(null) // 返回: true
|
||||
isNull(undefined) // 返回: false
|
||||
```
|
||||
|
||||
### undefined 检查
|
||||
|
||||
```typescript
|
||||
isUndefined(value: unknown): value is undefined
|
||||
```
|
||||
|
||||
检查值是否为 undefined。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isUndefined(undefined) // 返回: true
|
||||
isUndefined(null) // 返回: false
|
||||
```
|
||||
|
||||
### 空值检查
|
||||
|
||||
```typescript
|
||||
isEmpty(value: unknown): value is '' | any[] | object
|
||||
```
|
||||
|
||||
检查值是否为空('', [], {}),但不包括 null 和 undefined。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isEmpty('') // 返回: true
|
||||
isEmpty([]) // 返回: true
|
||||
isEmpty({}) // 返回: true
|
||||
isEmpty(null) // 返回: false
|
||||
```
|
||||
|
||||
## 类型获取
|
||||
|
||||
### 获取类型
|
||||
|
||||
```typescript
|
||||
getType(value: unknown): string
|
||||
```
|
||||
|
||||
获取值的类型字符串。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
getType(123) // 返回: 'Number'
|
||||
getType('hello') // 返回: 'String'
|
||||
getType(null) // 返回: 'Null'
|
||||
```
|
||||
|
||||
### 类型比较
|
||||
|
||||
```typescript
|
||||
isType<T>(type: string, value: unknown): value is T
|
||||
```
|
||||
|
||||
检查值是否为指定类型。
|
||||
|
||||
示例:
|
||||
|
||||
```typescript
|
||||
isType('Number', 123) // 返回: true
|
||||
isType('String', 123) // 返回: false
|
||||
```
|
||||
|
||||
## 特点
|
||||
|
||||
1. 使用 TypeScript 编写,提供完整的类型支持
|
||||
2. 使用 Ramda.js 进行函数式编程
|
||||
3. 所有检查函数都提供类型守卫
|
||||
4. 支持复杂类型和特殊类型检查
|
||||
5. 提供类型获取和比较功能
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 对象检查不包括数组类型
|
||||
2. null 和 undefined 检查是严格区分的
|
||||
3. 空值检查不包括 null 和 undefined
|
||||
4. 类型获取返回首字母大写的类型字符串
|
||||
5. 所有函数都是类型安全的
|
||||
Reference in New Issue
Block a user