打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Cosmokit 中文文档

来自 LNN的:not(博客)?
DGCK81LNN留言 | 贡献2026年5月12日 (二) 23:38的版本 (创建页面,内容为“{{info|color=red|此文档由 AI 生成并人工修正表述,完整 API 以源码为准:<br/>https://github.com/shigma/cosmokit}} {{DISPLAYTITLE:Cosmokit 中文文档}} Cosmokit 是主要由 Shigma 开发的一组灵活的 JavaScript/TypeScript 通用工具库,涵盖常用对象、数组、字符串、二进制和时间操作。 == 安装 == <syntaxhighlight lang="shell"> npm install cosmokit # 或者 yarn add cosmokit </syntaxhighlight> <syntaxhighli…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)


Cosmokit 是主要由 Shigma 开发的一组灵活的 JavaScript/TypeScript 通用工具库,涵盖常用对象、数组、字符串、二进制和时间操作。

安装

npm install cosmokit
# 或者
yarn add cosmokit
import { 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)
    对对象的键值进行映射。回调函数接收值、键,返回新值并保留原键不变组成新的对象。
    别名:valueMap
  • pick(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 字符串。
    全局别名:arrayBufferToBase64
  • Binary.fromBase64(str)
    base64 转 ArrayBuffer。
    全局别名:base64ToArrayBuffer
  • Binary.toHex(source)
    转十六进制字符串。
    全局别名:arrayBufferToHex
  • Binary.fromHex(str)
    十六进制转 ArrayBuffer。
    全局别名:hexToArrayBuffer
  • clone(source)
    深拷贝对象,支持 Date。

字符串工具

  • camelCase(source)
    连字符/下划线转小驼峰。
    别名:camelize
  • paramCase(source)
    转 param-case。
    别名:hyphenate
  • snakeCase(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.millisecondTime.secondTime.minuteTime.hourTime.dayTime.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")