Меня смущает схема наследования в машинописи. Кажется, я не могу вернуть дочерний тип при вызове super. Может кто-нибудь объяснить, почему этот пример не возвращает дочерний тип? Каков эффект as
? Есть ли способ добиться такого поведения?
class Parent {
_value: number
constructor(value: number){
this._value = value
}
add(x: Parent): Parent {
return new Parent(x._value + this._value)
}
}
class Child extends Parent {
constructor(value: number) {
super(value)
}
add(x: Child): Child {
return super.add(x) as Child
}
}
let a = new Child(10)
let b = new Child(5)
let c = a.add(b)
console.log(a)
console.log(b)
console.log(c)
Выход:
Child { _value: 10 }
Child { _value: 5 }
Parent { _value: 15 }