我有一个基本的传承,像这样:Typescript不能识别父类的属性?
export abstract class Animal
{
constructor() {
}
makeSound() {
alert(this.sound);
}
}
export class Dog extends Animal
{
public sound: string = "Woof!";
constructor() {
super();
}
}
const dog = new Dog;
dog.makeSound(); // Woof!
我有一个问题,试图让上面的代码工作。 Property prop does not exist on type A
。然而,它确实存在于B上,并且由于它是公开的,所以A应该能够通过this.prop
达到道具。
我试过如下:
- 同上 - 它不会编译。 (属性类型不存在于类型A上)
- 如果我将
public prop: any;
添加到A
,则prop
将变为undefined
而不是Hello world
。 - 如果我将
public abstract prop: any;
添加到A
,则会发生同样的情况。
通过使用抽象类的继承的全部点是分享this
范围。
如何正确使用Typescript?
不,这是自上而下的。一个苹果(B)是一个水果(A),但一个水果不是苹果。 继承添加或更改行为。你的B向A添加了一个属性。所以很明显A没有它。 – chris01
@chris谨慎阐述? – Aris
你假设A的任何实例也是B的一个实例。不是这样的:'C类扩展A {}'定义了一个扩展A的类,并且没有任何属性。 –