@fhir-toolkit/ucum

中文文档
0.2.0发布于 2026/04/06MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2311

UCUM( 计量单位统一代码) 解析器和 TypeScript 转换器

中文使用文档
文档目录12 节
  1. 安装
  2. 基本用途
  3. 校验
  4. 转换
  5. 检查可比性
  6. 条形
  7. 乘并相除
  8. 分析( )
  9. 建议()
  10. 处理错误
  11. 浏览器使用量
  12. 从 @lhncbc/ucum-lhc

@fhir-toolkit/ucum (英语)

UCUM(计量单位的统一代码)验证器,转换器,以及Node.js和浏览器的分析器.

安装

pnpm add @fhir-toolkit/ucum
# or
npm install @fhir-toolkit/ucum

基本用途

import { createUcumService } from '@fhir-toolkit/ucum'

const service = createUcumService()

校验

service.validate('mg/dL') // returns void — valid

service.validate('xyz')   // throws UcumValidationError

转换

const mg = service.convert(1, 'g', 'mg')
console.log(mg) // 1000

const celsius = service.convert(37, 'Cel', '[degF]')
console.log(celsius) // 98.6

// Throws UcumConversionError if units are not comparable
service.convert(1, 'mg', 'Cel')

检查可比性

service.isComparable('mg', 'g')    // true — same dimension (mass)
service.isComparable('mg', 'Cel')  // false — different dimensions
service.isComparable('kg.m/s2', 'N') // true — both resolve to force

条形

// Returns the value and base-unit code
const result = service.canonical(1, 'kg.m/s2')
// { value: 1, code: 'g.m.s-2' }

const result2 = service.canonical(1, 'mg/dL')
// { value: 0.01, code: 'g.l-1' }

乘并相除

const speed = service.multiply(
  { value: 100, code: 'm' },
  { value: 1,   code: 's-1' },
)
// { value: 100, code: 'm.s-1' }

const ratio = service.divide(
  { value: 10, code: 'g' },
  { value: 5,  code: 'L' },
)
// { value: 2, code: 'g.L-1' }

分析( )

返回 UCUM 表达式的可读描述 :

service.analyze('mg/dL')   // 'milligram per deciliter'
service.analyze('kg.m/s2') // 'kilogrammetersecond-2'
service.analyze('Cel')     // 'degree Celsius'

建议()

通过代码前缀或名称子字符串自动完成单元搜索 :

service.suggest('ki')    // [{ code: 'kg', name: 'kilogram' }, ...]
service.suggest('Cel')   // [{ code: 'Cel', name: 'degree Celsius' }, ...]

// Limit results (default: 20)
service.suggest('m', 5)  // at most 5 results

处理错误

import { UcumValidationError, UcumConversionError } from '@fhir-toolkit/ucum'

try {
  service.validate('bad~code')
} catch (err) {
  if (err instanceof UcumValidationError) {
    console.error(err.message) // invalid UCUM code "bad~code": ...
  }
}

try {
  service.convert(1, 'mg', 'Cel')
} catch (err) {
  if (err instanceof UcumConversionError) {
    console.error(`${err.from} → ${err.to}: ${err.message}`)
  }
}

浏览器使用量

在任何现代浏览器中工作——不需要特殊的捆绑器配置:

import { createUcumService } from '@fhir-toolkit/ucum'
const service = createUcumService()

从 @lhncbc/ucum-lhc

@lhncbc/ucum-lhc@fhir-toolkit/ucum
UcumLhcUtils.getInstance().validateUnitString(code)service.validate(code) (推错)
UcumLhcUtils.getInstance().convertUnitTo(value, from, to)service.convert(value, from, to)
UcumLhcUtils.getInstance().commensurableTest(code1, code2)service.isComparable(code1, code2)
手动字符串匹配service.suggest(prefix, limit)

关键差异 :

  • validate() 掷出 UcumValidationError 而不是返回状态对象.
  • convert() 返回平面 number 而不是结果对象.
  • canonical() 接受 (value, code) 返回时 { value, code }。 。 。 .

版本与发布记录

@fhir-toolkit/ucum 共发布 2 个版本,首次发布于 2026/04/05;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/04/067 个月前
0.1.02026/04/057 个月前

关于 @fhir-toolkit/ucum 的常见问题

@fhir-toolkit/ucum 是什么?

UCUM( 计量单位统一代码) 解析器和 TypeScript 转换器

如何安装 @fhir-toolkit/ucum?

在项目目录运行 npm install @fhir-toolkit/ucum,或使用 pnpm add / yarn add / bun add。

@fhir-toolkit/ucum 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fhir-toolkit/ucum 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@fhir-toolkit/ucum 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fhir-toolkit/ucum 可以商用吗?

@fhir-toolkit/ucum 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fhir-toolkit/ucum 的下载量有多少?

根据 npm 官方下载统计,@fhir-toolkit/ucum 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,311 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fhir-toolkit/ucum 还在维护吗?

最新版本 0.2.0 发布于 2026/04/06(7 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/04/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。