# @billjs/event-emitter 中文文档

规范地址：https://npmcn.com/package/%40billjs/event-emitter/

版本：1\.0\.3
npm 元数据更新时间：2022-04-04T18:49:49.829Z
中文译文更新时间：2026-11-08T02:31:46.942Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：22.6 kB，5 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2018-12-11T02:31:40.653Z
- 最新版本发布：2018-12-13T09:05:42.365Z
- 近 30 天下载量：5334（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 0 个）

## 中文简介

由 TypeScript 为Node.js 或浏览器制作的简单而轻量级事件Emiter.

## 安装

```sh
npm install @billjs/event-emitter
```

也可以使用：`pnpm add @billjs/event-emitter`、`yarn add @billjs/event-emitter`、`bun add @billjs/event-emitter`

## README

# 事件主题 [![Travis-ci Status](https://api.travis-ci.org/billjs/event-emitter.svg?branch=master)](https://travis-ci.org/billjs/event-emitter) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/billjs/event-emitter/blob/master/LICENSE) ![typescript | javascript | node.js](https://img.shields.io/badge/language-typescript%20%7C%20javascript%20%7C%20node.js-yellow.svg) [![Npm Version](https://img.shields.io/npm/v/@billjs/event-emitter.svg)](https://www.npmjs.com/package/@billjs/event-emitter)

由 TypeScript 为Node.js 或浏览器制作的简单而轻量级事件Emiter.

## 安装

安装使用 `npm install` 命令 :

```shell
npm install -S @billjs/event-emitter
```

## 概览

-   [事件编辑器](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventemitter)
-   [全球活动](https://npmcn.com/package/%40billjs/event-emitter/#readme-globalevent)
-   [打开](https://npmcn.com/package/%40billjs/event-emitter/#readme-on)
-   [一次](https://npmcn.com/package/%40billjs/event-emitter/#readme-once)
-   [关](https://npmcn.com/package/%40billjs/event-emitter/#readme-off)
-   [全部关闭](https://npmcn.com/package/%40billjs/event-emitter/#readme-offall)
-   [开火](https://npmcn.com/package/%40billjs/event-emitter/#readme-fire)
-   [已经](https://npmcn.com/package/%40billjs/event-emitter/#readme-has)
-   [获取手提箱](https://npmcn.com/package/%40billjs/event-emitter/#readme-gethandlers)
-   [事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler)
-   [活动](https://npmcn.com/package/%40billjs/event-emitter/#readme-event)

## API 密码

### 事件编辑器

是管理事件的班级. 它可以被扩展,为其他类或对象提供事件功能.

-   **类** - ES6级

有二种用法.

一个办法:

```typescript
const emitter = new EventEmitter();
emitter.on('event', evt => {
  console.log(evt);
});
```

另一种方式:

```typescript
class Store extends EventEmitter {
  set(key: string, value: any) {
    this.fire(`change:${key}`, value);
  }
}
```

### 全球活动

事件Emitter是全球范围的一个实例,你可以直接将其作为全球范围的事件发射器.

```typescript
// the code maybe in `a.ts`
globalEvent.on('event', evt => {
  console.log(evt);
});
```

```typescript
// the code maybe in `b.ts`
globalEvent.fire('event', 'test data');
```

### 打开

按类型和处理器聆听新事件 。 若听之,则取出真相还取,否则取出假相. 处理器如果是重复, 就不会听 .

-   **类型** (单位:千美元)`string`) - 事件类型,必须是独特的字符串.
-   **处理器** (单位:千美元)[事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler))-事件处理器,如果同一处理器被通过,只听一次.
-   **返回时** (单位:千美元)`boolean`)若听取之,则取出真相还出,否则取出假相.

```typescript
const emitter = new EventEmitter();
emitter.on('event', evt => {
  console.log(evt);
});
```

### 一次

按类型和处理者来聆听一次事件 当事件被解除时,它将被立即自动关闭. 处理器如果是重复, 就不会听 .

-   **类型** (单位:千美元)`string`) - 事件类型,必须是独特的字符串.
-   **处理器** (单位:千美元)[事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler)\- 事件处理器,如果同一处理器通过,只听一次.
-   **返回时** (单位:千美元)`boolean`)若听之,则取出真相还取,否则取出假相.

```typescript
const emitter = new EventEmitter();
emitter.once('event', evt => {
  console.log(evt);
});
```

### 关

按类型和处理者来听. 或按类型聆听事件,如果只通过类型参数. 或听从一切事件, 如果没有通过辩论.

-   _**\[类型\]**_ (单位:千美元)`string` `optional`事件类型
-   _**\[手**_ (单位:千美元)[事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler) `optional`() 事件处理器

听从指定事件.

```typescript
const emitter = new EventEmitter();
emitter.off('event', evt => undefined);
```

听从事件的类型.

```typescript
const emitter = new EventEmitter();
emitter.off('event');
```

听着所有的事情,它做的一样 `offAll` 方法.

```typescript
const emitter = new EventEmitter();
emitter.off();
```

### 全部关闭

听着,所有的事件, 这意味着每个事件都会被清空.

```typescript
const emitter = new EventEmitter();
emitter.offAll();
```

### 开火

启动指定事件, 您可以通过数据 。 被开除后,与该事件相接的每一位操作员将被处死. 但是,如果这是一次事件, 立即从它关闭 之后叫处理器.

-   **类型** (单位:千美元)`string`) - 事件类型
-   _**\[数据\]**_ (单位:千美元)`any`) - 事件数据

```typescript
const emitter = new EventEmitter();
emitter.fire('event', 'test data');
```

### 已经

检查指定事件是否已被监听 . 或者按类型检查事件是否在听,如果只是 `type` 论证通过.

-   **类型** (单位:千美元)`string`) - 事件类型
-   _**\[手**_ (单位:千美元)[事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler) `optional`\- 事件处理器
-   **返回时** (单位:千美元)`boolean`)所事被听取,则取出真相还取,否则取出假相.

```typescript
const emitter = new EventEmitter();
if (emitter.has('event')) {
  console.log('has `event`');
}
```

### 获取手提箱

获取指定事件类型的处理器 .

-   **类型** (单位:千美元)`string`) - 事件类型
-   **返回时** (单位:千美元)[事件汉德勒](https://npmcn.com/package/%40billjs/event-emitter/#readme-eventhandler)(中文(简体) )

```typescript
const emitter = new EventEmitter();
const handlers = emitter.getHandlers('event');
console.log(handlers);
```

### 事件汉德勒

事件处理器, 这是正常的功能 .

-   **页:1** (单位:千美元)[活动](https://npmcn.com/package/%40billjs/event-emitter/#readme-event)) - 事件对象, 这将传递给事件处理器作为参数 .

### 活动

事件对象.

-   **类型** (单位:千美元)`string`) - 事件类型
-   **数据** (单位:千美元)`any`) - 事件数据
-   **时间戳** (单位:千美元)`number`\- 事件发射时的时标
-   **一次** (单位:千美元)`boolean`) - 这是一个曾经的事件,这意味着在事件发射后听从

## 许可证

[MIT 许可证](https://npmcn.com/package/%40billjs/event-emitter/LICENSE)

## 常见问题

### @billjs/event-emitter 是什么？

由 TypeScript 为Node\.js 或浏览器制作的简单而轻量级事件Emiter\.

### 如何安装 @billjs/event-emitter？

在项目目录运行 npm install @billjs/event-emitter，或使用 pnpm add / yarn add / bun add。

### @billjs/event-emitter 支持 TypeScript 吗？

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

### @billjs/event-emitter 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @billjs/event-emitter 可以商用吗？

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

### @billjs/event-emitter 的下载量有多少？

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

### @billjs/event-emitter 还在维护吗？

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

