# @charpeni/one-of 中文文档

规范地址：https://npmcn.com/package/%40charpeni/one-of/

版本：1\.1\.1
npm 元数据更新时间：2025-08-29T18:44:54.739Z
中文译文更新时间：2026-11-09T10:59:35.179Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40charpeni/one-of
原文对照：https://npmcn.com/package/%40charpeni/one-of/?lang=original
项目主页：https://github.com/charpeni/one-of#readme
源码仓库：https://github.com/charpeni/one-of

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：12.2 kB，21 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-08-12T23:07:29.793Z
- 最新版本发布：2025-08-29T18:44:54.344Z
- 近 30 天下载量：11809（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 0 个）

## 中文简介

从数组返回随机元素或从对象中随机输入的安全类型工具

## 安装

```sh
npm install @charpeni/one-of
```

也可以使用：`pnpm add @charpeni/one-of`、`yarn add @charpeni/one-of`、`bun add @charpeni/one-of`

## README

# @charpeni/一个

![library's logo](https://github.com/user-attachments/assets/34f0670b-491e-4a1c-a1a8-373a252a16b5)

[![Version](https://badge.fury.io/js/%40charpeni%2Fone-of.svg)](https://www.npmjs.org/package/@charpeni/one-of) [![Monthly Downloads](https://img.shields.io/npm/dm/%40charpeni%2Fone-of)](https://www.npmjs.org/package/@charpeni/one-of) [![CodeCov](https://codecov.io/gh/charpeni/one-of/graph/badge.svg?token=KXQCYOMPYH)](https://codecov.io/gh/charpeni/one-of) [![GitHub License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/charpeni/one-of/blob/main/LICENSE)

类型安全并经过测试的公用设备从数组中返回随机元素或从对象中随机输入.

  

## 安装

```sh
npm install @charpeni/one-of
```

## 使用量

`oneOf` 是接受数组或对象并从中返回随机元素或条目的函数.

它的建造大多是为了用于测试或生成随机数据(它也可以安全地用于任何其他类型的行为,包括生产应用),例如:

```tsx
<Card color={oneOf(['red', 'blue', 'green'])}>{/* ... */}</Card>
```

> \[注\] `oneOf` 是类型安全函数。 它会推断所传递的数组或对象的类型作为参数,并返回相应的类型,以确保返回类型是一种可能性的结合而非原始类型(E`1 | 2` 改为 `number[]`) (中文(简体) ).
> 
> 如果输入通过内衬,则 `const` 将采用修改语句,因此该类型将推断为: `ReadonlyArray` 或只读 `Record`否则,使用 `as const` 建议.

```ts
import { oneOf } from '@charpeni/one-of';

// Returns a random element from the array
const element = oneOf([1, 2, 3]); // 2
//    ^? const element: 1 | 2 | 3

// Returns a random entry from the object
const entry = oneOf({ a: 1, b: 2, c: 3 }); // ['b', 2]
//    ^? const entry: ['a', 1] | ['b', 2] | ['c', 3]
```

具体职能也有: `oneElementOf` 财务报告和审定财务报表 `oneEntryOf`,这就是 `oneOf` 在罩下使用:

```ts
import { oneElementOf, oneEntryOf } from '@charpeni/one-of';

// Returns a random element from the array
const element = oneElementOf([1, 2, 3]); // 2
//    ^? const element: 1 | 2 | 3

// Returns a random entry from the object
const entry = oneEntryOf({ a: 1, b: 2, c: 3 }); // ['b', 2]
//    ^? const entry: ['a', 1] | ['b', 2] | ['c', 3]
```

## 许可证

@charpeni/一个是 [麻省理工学院执照](https://npmcn.com/package/%40charpeni/one-of/LICENSE)。 。 。 .

## 常见问题

### @charpeni/one-of 是什么？

从数组返回随机元素或从对象中随机输入的安全类型工具

### 如何安装 @charpeni/one-of？

在项目目录运行 npm install @charpeni/one-of，或使用 pnpm add / yarn add / bun add。

### @charpeni/one-of 支持 TypeScript 吗？

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

### @charpeni/one-of 支持 ESM 还是 CommonJS？

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

### @charpeni/one-of 可以商用吗？

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

### @charpeni/one-of 的下载量有多少？

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

### @charpeni/one-of 还在维护吗？

最新版本 1\.1\.1 发布于 2025/08/30（1\.2 年前）；至今共发布 4 个版本，其中过去 12 个月发布了 0 个；首次发布于 2024/08/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

