dlabs-utils
v1.0.0
Published
一个现代化的 TypeScript 工具函数库
Downloads
1
Readme
dlabs-utils
一个现代化的 TypeScript 工具函数库,提供了常用的字符串、数组、对象和日期处理函数。
安装
npm install dlabs-utils功能特性
- 完整的 TypeScript 类型支持
- 支持 ESM 和 CommonJS 模块规范
- 包含字符串、数组、对象和日期处理等常用工具函数
- 代码轻量化,可按需引入
使用示例
import { capitalize, unique, deepClone, formatDate } from 'dlabs-utils';
// 字符串处理
console.log(capitalize('hello')); // 'Hello'
// 数组操作
console.log(unique([1, 1, 2, 3])); // [1, 2, 3]
// 对象处理
const obj = { a: 1, b: { c: 2 } };
const cloned = deepClone(obj);
// 日期格式化
console.log(formatDate(new Date(), 'YYYY-MM-DD')); // '2024-03-20'API 文档
字符串工具
capitalize(str: string): string- 首字母大写camelToKebab(str: string): string- 驼峰命名转连字符命名kebabToCamel(str: string): string- 连字符命名转驼峰命名truncate(str: string, length: number): string- 截取字符串并添加省略号
数组工具
unique<T>(arr: T[]): T[]- 数组去重groupBy<T>(arr: T[], key: keyof T): Record<string, T[]>- 数组分组flatten<T>(arr: (T | T[])[]): T[]- 数组扁平化random<T>(arr: T[]): T- 获取数组中的随机元素
对象工具
deepClone<T>(obj: T): T- 基础深拷贝对象deepClonePlus<T>(target: T, cache?: WeakMap<object, unknown>): T- 增强版深拷贝函数- 支持循环引用的处理
- 支持特殊类型的克隆:
- 基本类型(String、Number、Boolean、Symbol、BigInt)
- 内置对象(Date、RegExp、Error)
- 集合类型(Map、Set)
- DOM节点(仅浏览器环境)
- 数组和普通对象
- 参数说明:
target: 要克隆的目标对象cache: 可选的WeakMap,用于处理循环引用
- 使用示例:
// 处理循环引用 const obj: any = { a: 1 }; obj.self = obj; const cloned = deepClonePlus(obj); // 克隆特殊类型 const date = new Date(); const dateClone = deepClonePlus(date); const map = new Map([[{ key: 1 }, { value: 2 }]]); const mapClone = deepClonePlus(map);get(obj: any, path: string | string[], defaultValue?: any): any- 获取对象指定路径的值merge<T extends object>(target: T, ...sources: Partial<T>[]): T- 合并对象removeEmpty<T extends object>(obj: T): Partial<T>- 移除对象中值为 null 或 undefined 的属性copyProperties<T extends object, U extends object>(source: T, target: U, options?: CopyPropertiesOptions | (keyof T)[])- 将源对象的属性复制到目标对象options.full?: boolean- 是否拷贝所有属性(包括原型链上的属性),默认falseoptions.excludes?: string[]- 排除的属性列表options.includes?: string[]- 包含的属性列表options.deep?: boolean- 是否深拷贝属性值,默认false
日期工具
formatDate(date: Date | number, format?: string): string- 格式化日期getRelativeTime(date: Date | number): string- 获取相对时间描述addDays(date: Date, days: number): Date- 添加天数isSameDay(date1: Date, date2: Date): boolean- 判断是否为同一天
开源协议
MIT
