让我们看一下下面的代码:
export class BaseClass<T> {
property = this.buildProperty();
buildProperty(){
return someBuilder<T>();
}
}
TS将使用返回的buildProperty()
类型神奇地推断出property
的类型
现在,对于更清晰的代码,我希望在构造函数中构建属性,我将代码重构如下:
export class BaseClass<T> {
property: ReturnType<BaseClass<T>['buildProperty']>;
constructor(){
this.property = this.buildProperty();
}
buildProperty(){
return someBuilder<T>();
}
}
这是正确的,但是我不满意重复当前类类型两次,即BaseClass<T>
然后我想知道是否可以使用this
来简化这一行。我尝试将属性的类型重写为如下所示,但没有成功:
property: ReturnType<this['buildProperty']>;
有没有更干净的方式来实现它?
1条答案
按热度按时间tf7tbtn21#
可以简单地使用
ReturnType<typeof this.buildProperty>