我对TypeScript(1.8)还很陌生,我在继承和静态属性方面遇到了一个小问题。
以下是我当前运行的测试代码:
class A {
public static Items = {
FOO: 'A'
};
public show() {
alert(this.constructor.Items.FOO);
}
}
class B extends A {
public static Items = {
FOO: 'B'
};
}
var a = new A();
var b = new B();
a.show(); // alert "A"
b.show(); // alert "B"
这段代码可以正常运行,两个警告框也都按预期显示。
但是 TypeScript 编译器会抛出一个错误:Property "Items" does not exist on type "Function"
。
我理解这个警告,从 TypeScript 的角度来看完全正确,但我应该如何在让编译器满意的同时获得同样的结果?this.Items.FOO
显然不起作用,我也没找到类似于 self
的东西或者其他替代方式……
我有什么遗漏吗?
提前感谢!
Items
属性的额外子类时(例如class C extends A {}
),您的show
方法将不起作用。 - Mattias Buelens