text: var Subject_1 = require('./Subject');
  var throwError_1 = require('./util/throwError');
  var ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError');
  /**
   * @class BehaviorSubject<T>
   */
  var BehaviorSubject = (function (_super) {
      __extends(BehaviorSubject, _super);
      function BehaviorSubject(_value) {
          _super.call(this);
          this._value = _value;
      }
      BehaviorSubject.prototype.getValue = function () {
          if (this.hasErrored) {
              throwError_1.throwError(this.errorValue);
          }
          else if (this.isUnsubscribed) {
              throwError_1.throwError(new ObjectUnsubscribedError_1.ObjectUnsubscribedError());
          }
          else {
              return this._value;
          }
      };
      Object.defineProperty(BehaviorSubject.prototype, "value", {
          get: function () {
              return this.getValue();
          },
          enumerable: true,
          configurable: true
      });
      BehaviorSubject.prototype._subscribe = function (subscriber) {
          var subscription = _super.prototype._subscribe.call(this, subscriber);
          if (subscription && !subscription.isUnsubscribed) {
              subscriber.next(this._value);
          }
          return subscription;
      };
      BehaviorSubject.prototype._next = function (value) {
          _super.prototype._next.call(this, this._value = value);
      };
      BehaviorSubject.prototype._error = function (err) {
          this.hasErrored = true;
          _super.prototype._error.call(this, this.errorValue = err);
      };
      return BehaviorSubject;
  })(Subject_1.Subject);
  exports.BehaviorSubject = BehaviorSubject;
  //# sourceMappingURL=BehaviorSubject.js.map