Typescript - функция подкласса, которая вызывает super, возвращает тип родительского класса - PullRequest
0 голосов
/ 16 января 2019

Меня смущает схема наследования в машинописи. Кажется, я не могу вернуть дочерний тип при вызове 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 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...