main-event
    Preparing search index...

    main-event

    Adds types to the EventTarget class.

    Hopefully this won't be necessary forever:

    In addition to types, a safeDispatchEvent method is available which prevents dispatching events that aren't in the event map, and a listenerCount method which reports the number of listeners that are currently registered for a given event.

    import { TypedEventEmitter } from 'main-event'
    import type { TypedEventTarget } from 'main-event'

    interface EventTypes {
    'test': CustomEvent<string>
    }

    const target = new TypedEventEmitter<EventTypes>()

    // it's a regular EventTarget
    console.info(target instanceof EventTarget) // true

    // register listeners normally
    target.addEventListener('test', (evt) => {
    // evt is CustomEvent<string>
    })

    // @ts-expect-error 'derp' is not in the event map
    target.addEventListener('derp', () => {})

    // use normal dispatchEvent method
    target.dispatchEvent(new CustomEvent('test', {
    detail: 'hello'
    }))

    // use type safe dispatch method
    target.safeDispatchEvent('test', {
    detail: 'world'
    })

    // report listener count
    console.info(target.listenerCount('test')) // 0

    // event emitters can be used purely as interfaces too
    function acceptTarget (target: TypedEventTarget<EventTypes>) {
    // ...
    }

    Classes

    TypedEventEmitter

    Interfaces

    EventCallback
    EventObject
    TypedEventTarget

    Type Aliases

    EventHandler

    Variables

    setMaxListeners