很抱歉,如果标题误导了我,我想不出更好的标题了。
所以我有两个这样的类:
class ClassA{
getObject(){
return new this(with some parameters)
}
}
class ClassB extends classA{
}
let a = new ClassB();
a.getObject();
我知道我总是可以通过一些参数返回新的ClassB()
。但是ClassA
被扩展了数百个类,并且每个类都会有很多变化。
那么,有没有办法在getObject
的{{1}}方法中返回自类的对象?
答案 0 :(得分:0)
您可以使用多态this
返回与当前类类型相同的实例:
class ClassA {
getObject(): this {
// not really type safe, not really recomnded
return new (this as any).constructor()
}
}
class ClassB extends ClassA {
}
let a = new ClassB();
let b = a.getObject(); // ClassB
console.log(a.getObject() instanceof ClassB); // true
您还可以使用类型参数推断this
的类型并将其用作返回类型:
class ClassA {
getObject<T>(this:T) : T {
// not really type safe
return new (this as any).constructor()
}
}
class ClassB extends ClassA {
}
let a = new ClassB();
let b = a.getObject(); // ClassB
console.log(a.getObject() instanceof ClassB); // true