# @flipbyte/when-condition 中文文档

规范地址：https://npmcn.com/package/%40flipbyte/when-condition/

版本：0\.6\.0
npm 元数据更新时间：2022-04-05T11:16:21.384Z
中文译文更新时间：2026-11-14T23:19:34.944Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：34.9 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2019-02-19T11:20:07.913Z
- 最新版本发布：2019-08-02T09:01:14.299Z
- 近 30 天下载量：4825（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 0 个）

## 中文简介

检查有条件的语句并返回真/假

## 安装

```sh
npm install @flipbyte/when-condition
```

也可以使用：`pnpm add @flipbyte/when-condition`、`yarn add @flipbyte/when-condition`、`bun add @flipbyte/when-condition`

## README

# 条件

[由 Flipbyte 开发](https://www.flipbyte.com/)

[![Build Status](https://travis-ci.org/flipbyte/when-condition.svg?branch=master)](https://travis-ci.org/flipbyte/when-condition) [![npm package](https://img.shields.io/npm/v/@flipbyte/when-condition.svg)](https://www.npmjs.com/package/@flipbyte/when-condition) [![Coverage Status](https://coveralls.io/repos/github/flipbyte/when-condition/badge.svg)](https://coveralls.io/github/flipbyte/when-condition) [![license](https://badgen.now.sh/badge/license/MIT)](https://npmcn.com/package/%40flipbyte/when-condition/LICENSE) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/7fdf5e97a9a1409cb2b895be5fc49633)](https://www.codacy.com/app/flipbyte/when-condition?utm_source=github.com&utm_medium=referral&utm_content=flipbyte/when-condition&utm_campaign=Badge_Grade)

检查有条件的语句并返回真/假

## 安装

```sh
npm i @flipbyte/when-condition
```

## 使用量

使用带有逻辑规则的数组(“和”或“或”)来定义您的条件,作为第一个元素,然后是一系列比较条件.

逻辑规则的一般表述如下:

```js
['{your logical rule}', [{your comparison rule 1}], [{your comparison rule 2}], ...]
```

比较规则是包含3个元素的数组:

-   比较规则.
-   需要将数值与条件相比较的对象的密钥 .
-   比较值.

比较规则的一般表述如下:

```js
['{comparison rule}', '{key}', '{comparison value}']
```

## 示例

视物体如下:

```js
let data = {
    a: 1,
    b: 2,
    c: {
        d: 'string',
        e: [{
            f: 1,
            g: 2
        }]
    }
}
```

### 单一规则

#### 简单地检查一条规则(说)数据

```js
let rule = ['is', 'a', 1]
```

或者说

#### 检查数据.c.e. \[0\].f = 1

```js
let rule = ['is', 'c.e[0]`.f', 1]
```

### 多项比较的规则

#### 请检查a=1和b=2的数据

```js
let rule = ['and', ['is', 'a', 1], ['is', 'b', 2]]
```

#### 检查数据.a=1或数据.b=2

```js
let rule = ['or', ['is', 'a', 1], ['is', 'b', 2]]
```

### 复杂规则

#### 检查是(data.a = 1和data.b = 2)还是(data.b = 2和data.c.d!='string')

```js
let rule = ['or', ['and', ['is', 'a', 1], ['is', 'b', 2]], ['and', ['is', 'b', 2], ['is', 'c.d', 'string']]]
```

### 评价规则

```js
import when from 'when-condition'

when(rule, data) // => returns true or false

```

### 使用召回的规则

也可以通过回调功能来检查数据. 将达成一个诺言. 可以是简单的功能,也可以是承诺

```js
when(function(data) {
    return data.a !== data.b
}, data).then((result) => {
    //...handle your result
})
```

## 逻辑规则

逻辑规则有两种:

-   `and` - 检查所有条件是否正确.
-   `or` - 检查一个条件是否正确.
-   `not` - 返回评估的比较规则的正反值。 这个逻辑规则只需要一个比较规则.

## 比较规则

现有比较规则如下:

-   `is` - 如果对象值与比较值严格相匹配,则返回真实值.
-   `isOfType` - 如果对象值与指定的类型(ex:字符串、未定义等)相匹配,则返回真实值.
-   `anyOf` - 如果至少一个比较值与对象键值相匹配,则返回真值。 比较值需要是一个数组.
-   `allOf` - 如果所有对象密钥值都与比较值相匹配,则返回真值。 比较值需要是一个数组.
-   `gt` - 如果对象键值大于比较值,则返回正数
-   `gte` - 如果对象键值大于或等于比较值,则返回正值
-   `lt` - 如果对象键值小于比较值,则返回正数
-   `lte` - 如果对象键值小于或等于比较值,则返回正数

## 许可证

《麻省理工学院许可证》

## 常见问题

### @flipbyte/when-condition 是什么？

检查有条件的语句并返回真/假

### 如何安装 @flipbyte/when-condition？

在项目目录运行 npm install @flipbyte/when-condition，或使用 pnpm add / yarn add / bun add。

### @flipbyte/when-condition 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/flipbyte\_\_when-condition 是否存在。

### @flipbyte/when-condition 支持 ESM 还是 CommonJS？

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

### @flipbyte/when-condition 可以商用吗？

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

### @flipbyte/when-condition 的下载量有多少？

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

### @flipbyte/when-condition 还在维护吗？

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

