picobus
Tiniest event bus possible, type-safe
import picobus from `picobus`
const bus = picobus<PayloadType>()
const callback = payload => handle(payload)
bus.listen(callback)
bus.unlisten(callback)
bus.dispatch(payload)
Create a new bus for every event type:
const localeBus = picobus<Locale>()
const themeBus = picobus<Theme>()
const currentUserBus = picobus<UserData>()
Type Checking
Base case
const bus = picobus<boolean>()
bus.dispatch(true)
bus.dispatch(null)
bus.dispatch()
No payload
const bus = picobus()
bus.dispatch()
bus.dispatch(false)
bus.dispatch(null)
Optional payload
const bus = picobus<boolean | undefined>()
bus.dispatch(true)
bus.dispatch()
bus.dispatch(null)
Typing the Consumer
import { Picobus } from `picobus`
function consumeBus (bus : Picobus<boolean>) {
bus.listen(payload => {
handleBoolean(payload)
})
}
You can also import Picolistener
and Picodispatch
, depending on your use-case.
Need more features? Get a bigger bus: