Typescript - 从 child 获取 parent 的正确方法

Typescript - Proper way to get parent from child

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

我知道您可以将 child 转换为它的 parent,但问题是 parent 中仍然存在额外的 child 属性,它们只是隐藏..

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

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

Kid class 只是继承了 Daddy。当你说 k as Daddy (即使这什么都不做,因为 k instanceof Daddy 已经是真的),你只是在说 "treat k knowing it has all Daddy properties and methods".

但最终,k 是一个 Kid 实例。你的 classes 命名表明你可能不完全理解继承,因为它们不是 "Parent" 和 "Child",它更像是 "Animal" vs "Dog" 或 "Person" 对比 "Daddy"。一般来说,在编程世界之外,我们可以确定一个孩子不是一个爸爸。