我正在使用TypeScript,但在类之间的静态继承方面遇到了问题。
有人能否解释一下以下代码的结果:
有人能否解释一下以下代码的结果:
class Foo {
protected static bar: string[] = [];
public static addBar(bar: string) {
this.bar.push(bar);
}
public static logBar() {
console.log(this.bar);
}
}
class Son extends Foo {
protected static bar: string[] = [];
}
class Daughter extends Foo {}
Foo.addBar('Hello');
Son.addBar('World');
Daughter.addBar('Both ?');
Foo.logBar();
Son.logBar();
Daughter.logBar();
当前结果:
[ 'Hello', 'Both ?' ]
[ 'World' ]
[ 'Hello', 'Both ?' ]
但我想要:[ 'Hello' ]
[ 'World' ]
[ 'Both ?' ]
我是否有一种解决方案,可以避免重新声明静态bar
属性?
谢谢!
static
关键字后,属性将绑定到实例而非类型。OP 希望该属性绑定到类型。 - snarf