我有一個基本的傳承,像這樣: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的類,並且沒有任何屬性。 –