Машинопись - правильный способ получить родителя от ребенка - PullRequest
0 голосов
/ 28 апреля 2020

Итак, мой вопрос: Есть ли способ получить родительский экземпляр из дочернего экземпляра в машинописи?

Я знаю, что вы можете преобразовать дочерний элемент в его родительский, но дело в том, что дополнительные дочерние свойства все еще присутствуют в родительском объекте, они просто скрыты ..

Вот минимальный воспроизводимый пример:

class Animal {
    name = "Animal";
}

class Kid extends Dog {
    name = "Dog";
    power = 'Bark';
}

const a = new Animal();
const d = a as Dog;
console.log(d.power);

В этом код, линтер недоволен d.power, но он все равно компилируется и работает просто отлично.

Так есть ли лучший способ сделать это, не переопределяя нового родителя?

1 Ответ

1 голос
/ 28 апреля 2020

Класс Kid просто наследует Daddy. Когда вы говорите k as Daddy (даже если это ничего не делает, так как k instanceof Daddy уже истина), вы просто говорите "лечить k, зная, что у него есть все Daddy свойства и методы".

Но в конце концов, k - это экземпляр Kid. Может быть, вы не полностью понимаете наследование ваших классов с именами классов, так как они не "Родитель" и "Ребенок", это больше похоже на "Животное" против "Собаки" или "Персона" против "Папы". Вообще говоря, вне мира программирования, мы можем быть уверены, что Малыш не папа.

...