Skip to content

@tmrw-realityos/charm


@tmrw-realityos/charm / ROSEvent

Class: ROSEvent<T>

Defined in: packages/charm/src/helpers/events.ts:71

Simple, type safe, multicast events.

Leaves out the complexity of event bubbling and cancellation.

Uses a naming convention of "on" to register an event listener and "off" to remove it.

Example

typescript
class EventHost {
  #currentValue = 0;
  #valueChanged= new ROSEvent<(value: number) => void>();

  mutateState() {
    this.#currentValue = 10;
    this.#valueChanged.dispatch(this.#currentValue);
  }
}

// Observer
const host = new EventHost();
const offChanged = host.#valueChanged.on((value) => {
  console.log("Value changed to", value);
});

function exit() {
  // remove event listener
  if (offChanged) offChanged();
}

Type Parameters

T

T extends EventHandler

Constructors

Constructor

new ROSEvent<T>(): ROSEvent<T>

Returns

ROSEvent<T>

Accessors

dispatch

Get Signature

get dispatch(): (...args) => void

Defined in: packages/charm/src/helpers/events.ts:75

Internal

Returns

(...args): void

Parameters
args

...Parameters<T>

Returns

void

Methods

on()

on(callback): RemoveEventListener

Defined in: packages/charm/src/helpers/events.ts:95

Register an event listener.

Parameters

callback

T

Returns

RemoveEventListener

A function that will remove the event listener when called.

Parameter

callback - The function to be called when the event is dispatched.

Example

typescript
const offChanged = host.#onChanged.on((value) => {
  console.log("Value changed to", value);
});