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"。一般来说,在编程世界之外,我们可以确定一个孩子不是一个爸爸。
所以,我的问题是:有没有办法从打字稿中的 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"。一般来说,在编程世界之外,我们可以确定一个孩子不是一个爸爸。