https://github.com/littlesound/typeevent
一个类型化的事件系统,基于 TypeScript 语言和 es6 增加的 Proxy
https://github.com/littlesound/typeevent
event-emitter proxy typedesign typescript
Last synced: about 1 year ago
JSON representation
一个类型化的事件系统,基于 TypeScript 语言和 es6 增加的 Proxy
- Host: GitHub
- URL: https://github.com/littlesound/typeevent
- Owner: LittleSound
- Created: 2021-08-19T15:52:19.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-09-27T05:45:38.000Z (over 3 years ago)
- Last Synced: 2025-04-12T10:57:20.120Z (about 1 year ago)
- Topics: event-emitter, proxy, typedesign, typescript
- Language: TypeScript
- Homepage:
- Size: 93.8 KB
- Stars: 13
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TypeEvent
### 一个类型化的事件系统
基于 TypeScript 语言和 es6 增加的 Proxy
- 直接使用事件对象的键值对,而不是字符串去索引事件。
- 编写 emit 和 on 方法参数时根据事件不同获取准确的参数类型校验和自动补全。
- 可以全局查找特定事件的引用,代码逻辑一目了然
## 开始使用
### 安装
npm:
```
npm install typeevent
```
yarn:
```
yarn add typeevent
```
### 创建事件处理器
```typescript
// event.ts
import { EventControl } from 'typeevent'
// 在这里枚举需要会出现的事件,以及它们传递哪些参数
interface Events extends EventControl {
// 发送完成
sent: [txHash: string]
// 上传中
uploading: [progress: number]
// 点击事件
clickon: [mousePosition: { x: number, y: number }]
}
// 创建事件处理器,记得传入刚刚创建的 Events 类型
export default EventControl()
```
### 收发事件
```typescript
import Events from './events'
Events.sent.on(txHash => {
// 无需再次声明为 string 类型
console.log(txHash.toLocaleUpperCase())
})
Events.uploading.on(progress => {
console.log(`Progress: ${progress}%`)
})
Events.uploading.emit(50)
// 打印: "Progress: 50%"
Events.uploading.emit(100)
// 打印: "Progress: 100%"
Events.sent.emit('0xe60cc11b8de')
// 打印: "0XE60CC11B8DE"
```
## 事件方法列表
### `on`
监听事件,事件发送时触发会调函数
#### 类型定义:
```typescript
on(callback: (...args: EventArgs) => any): void
```
### `once`
只执行一次的事件监听,执行过一次后就会被移除
#### 类型定义:
```typescript
once(callback: (...args: EventArgs) => any): void
```
### `emit`
发送事件,传入事件所需的参数
```typescript
emit(...args: EventArgs): void
```
### `offAll`
移除该事件所有的监听
#### 类型定义:
```typescript
offAll(): void
```
### `off`
移除该事件指定的监听,传入调用事件时相同的方法
#### 类型定义:
```typescript
off(callback: (...args: T) => any): void
```