我有一个抽象类,它的一个函数需要创建一个自己的实例。显然在继承的类new this()
中将创建一个继承类的新实例,而不是抽象类。
new this()
处的Typescript错误,因为从技术上讲,我正在创建一个抽象类的新实例(或者如果我直接使用该类的话)。
是否可以忽略错误?我宁愿忽略那一行而不是所有关于抽象类的新闻。
从类定义中删除abstract
使得typescript感到满意并且代码按预期工作。所以这里唯一的问题是打字稿并不快乐。
答案 0 :(得分:1)
您可以使用 getPrototypeOf
abstract class Parent {
replicate(): this {
return new (Object.getPrototypeOf(this).constructor)();
}
}
class Child extends Parent {}
let c = (new Child).replicate();
console.log(c); // Child {}