当前最新版本的 TS 编译器不支持。
要变通的话,extends
“扩展” 是不行了,只能 implements
“实现”。
class Sub implements Base {
public foo: string;
public bar: number;
constructor(arg: number) {
this.foo = arg + '';
this.bar = arg;
}
static create(arg: number) {
return new Sub(arg);
}
}
不过这么写就恶心了,父类里的成员还得重写一遍;要么你就 @ts-ignore
掉;或者 any 大法。
P.S. 静态方法覆写报错的问题从 2015 年就有人提出了(GitHub 讨论传送门:https://github.com/microsoft/...),之所以不支持,是出于兼容很多 Polyfill 库的考虑。社区的主流意见是希望增加一个编译器参数可以控制是否允许覆写静态方法,不过到目前为止这个功能都还是没有的 ……
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…