当前位置:  开发笔记 > 编程语言 > 正文

在继承的类方法中使用静态属性

如何解决《在继承的类方法中使用静态属性》经验,为你挑选了2个好方法。

这段代码使用Babel和TypeScript进行转换,并按预期工作.

class ParentClass {
    static staticProp = true; 

    method() {
        console.log(this.constructor.staticProp);
    }
}

class ChildClass extends ParentClass {
    static staticProp = false;
}

(new ChildClass).method(); 

这里的要求是引用当前类(through this.constructor)的静态属性而不是显式提及类,因此可以继承该方法并在子类中使用相关的静态属性.

它可以用于Babel,TypeScript也可以编译它,但它会抛出

错误TS2339:属性'staticProp'在类型'Function'上不存在.

在编译.

如何处理这种情况以取悦TypeScript编译器?



1> Martin Vseti..:

TypeScript目前仅支持ClassName.staticPropertyName语法.然而,有一个悬而未决的问题要求简化它.

你也可以将你包裹staticProp在一个吸气剂中.这很麻烦,但至少它不像语言黑客:

class ParentClass {
    static staticProp = true; 

    method() {
        console.log(this.staticProp);
    }

    get staticProp(): boolean { return ParentClass.staticProp; }
}

class ChildClass extends ParentClass {
    static staticProp = false; 

    get staticProp(): boolean { return ChildClass.staticProp; }
}

(new ChildClass).method(); 



2> Estus Flask..:

我能够让TypeScript保持沉默

class ParentClass {
    static staticProp = true; 

    method() {
        console.log((this.constructor).staticProp);
    }
}

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有