k8w.io
在TypeScript中通过this来获取静态成员的方法
2017-12-27作者:k8w

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';
}
  1. 在类定义中,声明"constructor": typeof 当前类
  2. 即可在代码中通过this.constructor.xxx来获取静态成员
  3. 注意:"constructor"类型声明一定要带引号
(正文完)
标签:TypeScript
留言(0条)
发表新留言
您的大名:
必填
电子邮箱:
不公开,仅用于向你发送回复