SignalsJS is a TypeScript port of AS3 Signals. 15KB compressed.
Signals are light-weight, strongly-typed messaging tools. Wire your application with better APIs and less boilerplate than normal event systems.
- A Signal is essentially a mini-dispatcher specific to one event, with its own array of listeners.
- A Signal gives an event a concrete membership in a class.
- Listeners subscribe to real objects, not to string-based channels.
- Event string constants are no longer needed.
- Signals was originally implemented by Robert Penner in AS3.
- Signals are inspired by C# events and signals/slots in Qt.
// with DOM EventListener
button.addEventListener("click", onClick);
// Signal equivalent; past tense is recommended
button.clicked.add(onClicked);
You can get the latest release and the type definitions using NPM:
npm install @robotlegsjs/signals
Or using Yarn:
yarn add @robotlegsjs/signals
import { Signal } from "@robotlegsjs/signals";
let signal = new Signal();
signal.add(data => {
console.log(data.message);
});
signal.dispatch({ message: "hello signal!" });