PHP中,可通过self
方便的获取当前类的静态成员。
在TypeScript中,通常使用类名.静态成员名
的方式来获取,但这样丧失了许多灵活性。
有没有更简便的方法呢?例如,直接使用this
?
问题
class Dog {
static staticName = 'Dog'
showName() {
console.log(Dog.staticName);
}
}
class HappyDog extends Dog {
static staticName = 'Cat';
//冗余
showName() {
console.log(HappyDog.staticName);
}
}
对于以上代码,由于无法直接获取当前类对应的静态成员,所以导致showName
方法出现了冗余。
解决办法
class Dog {
"constructor": typeof Dog;
static staticName = 'Dog'
showName() {
console.log(this.constructor.staticName);
}
}
class HappyDog extends Dog {
"constructor": typeof HappyDog;
static staticName = 'Cat';
}
- 在类定义中,声明
"constructor": typeof 当前类
- 即可在代码中通过
this.constructor.xxx
来获取静态成员 - 注意:
"constructor"
类型声明一定要带引号
(正文完)