在setter中使用带有类型防护的getter和setter

时间:2018-06-27 14:43:20

标签: javascript typescript getter-setter

我想在课堂上添加一个吸气剂和吸气剂。但是,该设置方法应该接收到querySelector,但是该getter返回一种新的类型pageSections

我的问题是,getter和setter必须具有相同的参数/返回值,但是我想在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
  }
}  

我想念什么?应该怎么做?

1 个答案:

答案 0 :(得分:1)

您不能这样做,为什么有可能?

您可以:

  • 创建另一个方法(setParent(q:querySelector))
  • 创建一个转换器,该转换器详细说明querySelector并返回要使用“设置父级”设置的pageSections

您可以在此处找到issue(仍在2015年开始讨论)。