200.Land

class-emits-event.ts

The JavaScript code defines a MyClass class extending Node.js' EventEmitter to manage custom events. It has a method someMethod that emits an "alerts" event with the class state as argument. After instantiation, a timer is set to invoke someMethod after a delay, which triggers a console log in an event listener set up to listen for "alerts" events, demonstrating a basic event-driven programming setup.

import { EventEmitter } from "events";

const enum Events {
  "alert" = "alerts",
  "info" = "infos"
}

class MyClass extends EventEmitter {
  private myClassState = { foo: "bar" };
  constructor() {
    super();
    setTimeout(() => {
      console.log("something happend that resulted in:");
      this.someMethod();
    });
  }
  public someMethod(): void {
    this.emit(Events.alert, this.myClassState);
  }
}

const c = new MyClass();
c.on(Events.alert, args => console.log("alert being triggeted", args));