什么(<typeof classname =“”> this.constructor)在打字稿中意味着什么?

时间:2017-11-15 10:07:20

标签: javascript typescript

当我看到jQTree(https://github.com/mbraak/jqTree)的sourceCode时,它写在Typescript中;我看到了这个:

&#13;
&#13;
export default class SimpleWidget{
    protected static defaults = {};
    public options:any
    protected $el : JQuery

    constructor(el:Element,options:any){
        this.$el = $(el);
        console.log(typeof SimpleWidget)
        let defaults = (<typeof SimpleWidget>this.constructor).defaults;
        console.log(defaults)
        this.options = $.extend({},defaults,options);
    }
}
&#13;
&#13;
&#13;

(this.constructor)是什么意思?如何在Assertion之后得到静态?

1 个答案:

答案 0 :(得分:1)

该类将编译为构造函数,并将static属性直接附加到它:

function SimpleWidget(el, options) { ... }

SimpleWidget.defaults = {};

子类将定义自己的defaults

class DerivedWidget extends SimpleWidget {
  protected static defaults = { prop: 'derived default' };
}

将编译为:

DerivedWidget.defaults = { prop: 'derived default' };

因此,父级将要访问子级的静态默认值,如果访问SimpleWidget.defaults,则无法获取该默认值。但它可以访问this.constructor.defaults,这是动态的。