首页 > 解决方案 > 打字稿 - 从孩子那里获得父母的正确方法

问题描述

所以,我的问题是:有没有办法从打字稿中的子实例获取父实例?

我知道您可以将孩子投射到其父母中,但问题是额外的孩子属性仍然存在于父母中,它们只是被隐藏了..

这是一个最小的可复制示例:

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);

在这段代码中,linter 对 . 不满意d.power,但它仍然可以编译并且工作得很好。

那么有没有更好的方法来做到这一点,而无需重新定义新的父母?

标签: typescriptoopinheritanceparent-child

解决方案


该类Kid只是继承Daddy。当您说k as Daddy(即使这什么也没做,因为k instanceof Daddy已经是真的),您只是在说“k知道它具有所有Daddy属性和方法”。

但归根结底,k是一个 Kid 实例。您的类命名表明您可能不完全了解继承,因为它们不是“父母”和“孩子”,更像是“动物”与“狗”或“人”与“爸爸”。一般来说,在编程世界之外,我们可以确定孩子不是爸爸。


推荐阅读