Optionalinitializator: Nullable<CallbackInitializator<TCallback, This>>Fonction appelée à la création de l'événement pour le
configurer (abonnés par défaut, etc.).
Passer NoInitEvent si aucune logique n'est requise
mais qu'un objet options doit être fourni.
Passer null ou omettre pour ne rien faire.
Optionaloptions: ListenerDefaultOptions<TCallback, This>Options de configuration. Voir ListenerDefaultOptions.
type ClickCallback = (e: MouseEvent) => void;
class Button {
// Lazy par défaut — créé au premier accès
@event<ClickCallback>()
accessor onClick: EventDelegate<ClickCallback>;
// Eager — créé dès l'instanciation de Button
@event<ClickCallback>(null, { lazy: false })
accessor onDoubleClick: EventDelegate<ClickCallback>;
// Avec initialisation — abonné ajouté à la création
@event<ClickCallback>((ev, instance) => {
ev.add('default', (e) => instance.handleClick(e));
})
accessor onContextMenu: EventDelegate<ClickCallback>;
}
const btn = new Button();
btn.onClick.add('logger', (e) => console.log(e.clientX));
btn.onClick.invoke(new MouseEvent('click'));
Décorateur d'accesseur qui transforme une propriété de classe en EventDelegate géré automatiquement.
Inspiré du mot-clé
eventde C#, ce décorateur encapsule la création, le cycle de vie et la mise en cache d'un EventDelegate sur l'instance. La propriété décorée devient accessible en lecture seule — toute tentative d'affectation lève une erreur.Le cache est partagé sur l'instance via un
Symbolnon énumérable, garantissant l'isolation entre les différents événements d'une même classe.