constructor() {
    super();

    this.on =
      /** @type {ObservableOnSignature<import("./events").EventsKey>} */ (
        this.onInternal
      );

    this.once =
      /** @type {ObservableOnSignature<import("./events").EventsKey>} */ (
        this.onceInternal
      );

    this.un = /** @type {ObservableOnSignature<void>} */ (this.unInternal);

    /**
     * @private
     * @type {number}
     */
    this.revision_ = 0;
  }
@classdesc
Abstract base class; normally only used for creating subclasses and not
instantiated in apps.
An event target providing convenient methods for listener registration
and unregistration. A generic `change` event is always available through
{@link module:ol/Observable~Observable#changed}.

@fires import("./events/Event.js").default
@api