Это, вероятно, дубликат, но я ничего не нашел.
В основном у меня есть этот (слишком упрощенный) код:
class A {
doSomething() {
return new A();
}
}
class B extends A {
doSomething() {
return new B();
}
}
const a = new A().doSomething() // a should be an instance of A
const b = new B().doSomething() // b should be an instance of B
Здесь doSomething
делает точно То же самое в обоих классах, за исключением типа возвращаемого экземпляра (я пытаюсь иметь неизменяемые экземпляры).
Итак, я сделал так, чтобы изменить код следующим образом:
class A {
doSomething() {
return this.constructor();
}
}
class B extends A {
// nothing
}
... что, кажется, работает нормально. Но у меня такое ощущение, что это скорее взлом, чем что-либо другое.
Есть ли лучший способ сделать это?