export class Event { private listeners: Function[] = [] addListener (callback: Function) { this.listeners.push(callback) } removeListener (callback: Function) { const index = this.listeners.indexOf(callback) if (index !== -1) { this.listeners.splice(index, 1) } } emit (...args: any[]) { for (const listener of this.listeners) { listener(...args) } } }