【问题标题】:Typescript - Proper way to get parent from child打字稿 - 从孩子那里获得父母的正确方法
【发布时间】:2020-04-28 09:52:27
【问题描述】:

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

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

Here's 一个最小的可复制示例:

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 不满意,但它仍然可以编译并且工作正常。

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

【问题讨论】:

    标签: typescript oop inheritance parent-child


    【解决方案1】:

    Kid 类只是继承了Daddy。当你说k as Daddy(即使这没有任何作用,因为k instanceof Daddy 已经是真的),你只是在说“对待k,知道它具有所有Daddy 属性和方法”。

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

    【讨论】:

    • 没错,我明白,是的,我的命名是不正确的,当我们谈到继承时,我受到了我们如何称它们为“父”和“子”类的影响,尽管正如你所说,这是Animal - Dog 关系,而不是Daddy - Kid
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2022-08-10
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多