在 setter 中使用带有类型保护的 getter & setters

Using getter & setters with type guard in setter

我想在我的 class 中添加一个 getter 和 setter。然而 setter 应该接收一个 querySelector 但 getter returns 一个新类型 pageSections.

我的问题是 getter 和 setter 必须具有相同的 argument/return 值,但我想将类型保护放在 setter 中。 pageSections 在类型定义文件中定义并且工作正常。

// in the code …
this.parent(this.closest('page-sections'))

// in the class
PageSection {
  private _parent: pageSections = undefined

  /**
   * @method setter parent
   * @description set the parent property
   */
  set parent (parent: pageSections) {
    if (this._parent === parent) return
    if (typeof parent.current === undefined) return // this validates it being a pageSections for now
    this._parent = parent
  }

  /**
   * @method getter parent
   * @description get the parent property
   */
  get parent (): pageSections {
    return this._parent
  }
}  

我错过了什么?应该怎么做?

你不能那样做,为什么可以呢?

您可以:

  • 创建另一个方法 (setParent(q:querySelector))
  • 创建一个转换器,详细说明 querySelector 和 returns 要使用 "set parent"
  • 设置的 pageSections

您可以在这里找到关于它的 issue(从 2015 年开始仍在讨论)。