@rotomeca/event - v5.0.0
    Preparing search index...

    Class JsEvent<TCallback>

    Gestionnaire d'événements générique — version historique de EventDelegate.

    JsEvent accepte n'importe quelle signature de callback via any[] et délègue son invoke à un EventDelegate éphémère reconstruit à chaque appel. Cette reconstruction systématique est la principale raison de la dépréciation : elle est inutilement coûteuse et ne présente aucun avantage par rapport à l'utilisation directe de EventDelegate ou EventHandler.

    // ❌ À éviter — classe dépréciée
    const event = new JsEvent<(msg: string) => void>();
    event.add('handler', (msg) => console.log(msg));
    event.invoke('bonjour');

    // ✅ Préférer
    const event = new EventDelegate<(msg: string) => void>();
    event.add('handler', (msg) => console.log(msg));
    event.invoke('bonjour');

    Utilisez EventDelegate ou EventHandler à la place.

    Type Parameters

    • TCallback extends Func = Func

      Type du callback. Doit étendre Func. Par défaut Func.

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    • get keys(): string[]

      Retourne la liste des clés des callbacks actuellement enregistrés.

      Returns string[]

      const keys = event.keys; // ['handler1', 'handler2']
      

    Methods

    • Protected

      Retourne les données associées à la clé donnée, ou null si la clé n'existe pas.

      Point d'accès protégé au dictionnaire interne — permet aux classes concrètes d'accéder aux données d'un callback sans exposer #_callbacks directement.

      Parameters

      • key: string

        La clé du callback à récupérer.

      Returns MayBe<IEventData<any[], TCallback>>

      Les données du callback, ou null si la clé est absente.

    • Ajoute un callback avec une clé spécifique.

      Parameters

      • key: string

        Clé identifiant le callback.

      • event: TCallback

        Le callback à ajouter.

      • ...args: any[]

        Arguments par défaut transmis au callback à chaque appel.

      Returns this

      L'instance courante pour permettre le chaînage.

    • Déclenche tous les callbacks enregistrés et retourne leur résultat sous une forme simplifiée.

      Type Parameters

      • TResult = ReturnType<TCallback>

        Type de la valeur retournée par les callbacks. Par défaut ReturnType<TCallback>.

      Parameters

      • ...args: any[]

        Arguments transmis à chaque callback lors de l'appel.

      Returns Nullable<TResult | TResult[]>

      null si aucun callback, la valeur directe si un seul, un tableau de valeurs si plusieurs.

      const event = new JsEvent<() => string>();
      event.add('a', () => 'bonjour');
      event.add('b', () => 'monde');

      const result = event.call(); // ['bonjour', 'monde']

      invoke — variante typée retournant un EventCallResult discriminé

      Utilisez EventDelegate ou EventHandler et leur méthode invoke qui retourne un EventCallResult discriminé, plus sûr à utiliser en TypeScript.

    • Supprime tous les callbacks enregistrés en une seule opération O(1).

      Capture la liste des callbacks avant l'effacement, puis déclenche onHandlerCleared après — garantissant que la Map est vide avant la notification, sans risque de double déclenchement si un observateur appelle add dans son callback.

      Returns this

      L'instance courante pour permettre le chaînage.

    • Vérifie si un callback est enregistré sous la clé donnée.

      Parameters

      • key: string

        La clé à vérifier.

      Returns boolean

      true si un callback existe pour cette clé, false sinon.

    • Déclenche tous les callbacks enregistrés avec les arguments fournis.

      Le résultat dépend du nombre de callbacks enregistrés :

      • { type: 'empty' } si aucun callback n'est enregistré.
      • { type: 'single', value } si un seul callback est enregistré.
      • { type: 'multiple', values } si plusieurs callbacks sont enregistrés.

      Parameters

      • ...args: any[]

        Arguments transmis à chaque callback lors de l'appel. Accepte n'importe quelle signature (any[]).

      Returns EventCallResult<TCallback>

      Un EventCallResult décrivant le résultat de l'appel.

      const event = new JsEvent<(n: number) => number>();
      event.add('double', (n) => n * 2);

      const result = event.invoke(5);

      if (result.type === 'single') {
      console.log(result.value); // 10
      }