在 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 年开始仍在讨论)。
我想在我的 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 年开始仍在讨论)。