当我看到jQTree(https://github.com/mbraak/jqTree)的sourceCode时,它写在Typescript中;我看到了这个:
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;
(this.constructor)是什么意思?如何在Assertion之后得到静态?
答案 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
,这是动态的。