Cosmokit 中文文档
来自 LNN的:not(博客)?
更多操作
此文档由 AI 生成并人工修正表述,完整 API 以源码为准:
https://github.com/shigma/cosmokit
Cosmokit 是主要由 Shigma 开发的一组灵活的 JavaScript/TypeScript 通用工具库,涵盖常用对象、数组、字符串、二进制和时间操作。
安装
npm install cosmokit
# 或者
yarn add cosmokitimport { contain, camelCase, Time } from 'cosmokit'数组工具
contain(array1, array2)
判断 array2 的所有元素是否都包含在 array1 内。intersection(array1, array2)
计算两数组的交集。difference(array1, array2)
计算两数组的差集。union(array1, array2)
计算两数组的并集。deduplicate(array)
数组去重。remove(list, item)
从数组里移除某元素,返回是否成功。makeArray(source)
将 null/undefined/单个值/数组标准化为数组。
import { deduplicate, union } from 'cosmokit'
deduplicate([1, 2, 2, 3]) // [1, 2, 3]
union([1, 2], [2, 3]) // [1, 2, 3]对象通用工具
noop()
空函数,什么都不做。isNullable(value)
判断是否为 null/undefined/void。isNonNullable(value)
判断是否不是 null/undefined/void。isPlainObject(data)
判断是否为普通对象(非数组)。filterKeys(object, fn)
对对象的键值进行筛选。回调函数接收键、值,保留结果为真的键值并组成新的对象。mapValues(object, fn)
对对象的键值进行映射。回调函数接收值、键,返回新值并保留原键不变组成新的对象。
别名:valueMappick(source, keys, forced)
从对象上选出指定的键,返回对应键值组成的新对象。forced为真时不存在的键会被强制添加,值为 undefined。omit(source, keys)
排除对象上指定的键,返回其余键值组成的新对象。defineProperty(object, key, value)
在对象上定义不可枚举属性。
import { isNullable, pick, omit } from 'cosmokit'
pick({ a:1, b:2 }, ['a']) // { a: 1 }
omit({ a:1, b:2 }, ['b']) // { a: 1 }类型与二进制数据工具
is(type, value)
判断变量是否为指定全局类型。Binary.is(value)
判断是否为 ArrayBuffer/SharedArrayBuffer。Binary.isSource(value)
判断是否为二进制源((Shared)ArrayBuffer/ArrayBufferView)。Binary.fromSource(source)
获取二进制源的 ArrayBuffer。Binary.toBase64(source)
转 base64 字符串。
全局别名:arrayBufferToBase64Binary.fromBase64(str)
base64 转 ArrayBuffer。
全局别名:base64ToArrayBufferBinary.toHex(source)
转十六进制字符串。
全局别名:arrayBufferToHexBinary.fromHex(str)
十六进制转 ArrayBuffer。
全局别名:hexToArrayBufferclone(source)
深拷贝对象,支持 Date。
字符串工具
camelCase(source)
连字符/下划线转小驼峰。
别名:camelizeparamCase(source)
转 param-case。
别名:hyphenatesnakeCase(source)
转 snake_case。formatProperty(key)
格式化属性键:输入字符串或 Symbol 键,输出.key或[value]格式的字符串。trimSlash(source)
去除末尾斜杠。sanitize(source)
开头保留斜杠,并去除末尾斜杠。
import { camelCase, paramCase } from 'cosmokit'
camelCase('foo_bar') // 'fooBar'
paramCase('fooBar') // 'foo-bar'时间工具
Time 命名空间导出一系列时间相关常量与工具方法。
- 毫秒单位的时间常量:
Time.millisecond、Time.second、Time.minute、Time.hour、Time.day、Time.week Time.setTimezoneOffset(num)/Time.getTimezoneOffset()
设置/获取默认时区偏移(本地时间转 UTC 时间需要加上的分钟数,与Date.prototype.getTimezoneOffset()一致)。该默认值会被 Time.getDateNumber 和 Time.fromDateNumber 使用,初始为系统当前时区偏移。Time.getDateNumber(date, offset)
获取本地日期编号。date 为 Date 对象或毫秒时间戳。Time.fromDateNumber(val, offset)
日期编号转 Date 对象。Time.parseTime(str)
解析形如“1d2h5m3s”的时间字符串到毫秒数。Time.parseDate(str)
解析日期字符串到 Date 对象。除了 Date 原生支持的格式外还支持下列格式:- 同
Time.parseTime(str)的格式,表示当前时间的指定间隔之后。 年-月-日-时:分:秒(分、秒可省略),可省略年、月、日(使用当前日期)或只省略年(使用当前年份)。
- 同
Time.format(ms)
将毫秒数格式化为人类可读的大致值,如 3h。Time.toDigits(num, length=2)
数字左补零到指定长度。Time.template(template, time)
格式化时间戳为指定模板字符串。模板字符串支持以下占位符:yyyy(四位年)、yy(两位年)、MM(两位月)、dd(两位日)、hh(两位小时)、mm(两位分钟)、ss(两位秒)、SSS(三位毫秒)。例如Time.template('yyyy-MM-dd hh:mm:ss', new Date())。time 必须为 Date 对象,默认取当前时间。
import { Time } from 'cosmokit'
Time.parseTime('2h5m') // 7500000
Time.format(60000) // '1m'
Time.template("yyyy-MM-dd hh:mm:ss")