annotations-design-patterns
    Preparing search index...

    Function On

    • Auto-suscribe el método al evento del Subject al construir cada instancia (complemento de @Emits). El método recibe el payload del evento y conserva su this. Apilable para escuchar varios eventos. Un Subject tipado comprueba tanto el nombre como el payload del listener.

      Nota: la suscripción vive tanto como el Subject — las instancias no se dan de baja automáticamente; si el Subject sobrevive a las instancias, las retendrá.

      Type Parameters

      • Events extends object
      • Key extends string

      Parameters

      Returns <This, Return>(
          target: (this: This, payload: Events[Key]) => Return,
          context: ClassMethodDecoratorContext<This>,
      ) => void

      const bus = new Subject();

      class Audit {
      @On(bus, 'user:created')
      onUserCreated(user: unknown): void { ... }
      }
      new Audit(); // ya está escuchando
    • Auto-suscribe el método al evento del Subject al construir cada instancia (complemento de @Emits). El método recibe el payload del evento y conserva su this. Apilable para escuchar varios eventos. Un Subject tipado comprueba tanto el nombre como el payload del listener.

      Nota: la suscripción vive tanto como el Subject — las instancias no se dan de baja automáticamente; si el Subject sobrevive a las instancias, las retendrá.

      Type Parameters

      • Bus extends Subject<Record<string, unknown>>
      • Key extends string

      Parameters

      Returns <This, Payload, Return>(
          target: (this: This, payload: Payload) => Return,
          context: ClassMethodDecoratorContext<
              This,
              (this: This, ...args: any) => any,
          > & (
              Bus["on"] extends (
                  event: Key,
                  listener: (payload: Payload) => Return,
              ) => unknown
                  ? unknown
                  : never
          ),
      ) => void

      const bus = new Subject();

      class Audit {
      @On(bus, 'user:created')
      onUserCreated(user: unknown): void { ... }
      }
      new Audit(); // ya está escuchando