Add Callback type

Adds a reusable Callback type that is applied to emitter.ts for improved
readability/simplicity.
This commit is contained in:
G r e y 2020-08-08 22:18:49 -05:00
parent 8d03c22cb0
commit a0ff2014c3
No known key found for this signature in database
GPG Key ID: 1B933BA64CF808BD
2 changed files with 6 additions and 3 deletions

View File

@ -1,19 +1,21 @@
import { Callback } from "./types"
export interface Disposable {
dispose(): void
}
export interface Event<T> {
(listener: (value: T) => void): Disposable
(listener: Callback<T>): Disposable
}
/**
* Emitter typecasts for a single event type.
*/
export class Emitter<T> {
private listeners: Array<(value: T) => void> = []
private listeners: Array<Callback<T>> = []
public get event(): Event<T> {
return (cb: (value: T) => void): Disposable => {
return (cb: Callback<T>): Disposable => {
this.listeners.push(cb)
return {

1
src/common/types.ts Normal file
View File

@ -0,0 +1 @@
export type Callback<T, R = void> = (t: T) => R