私はそうのような基本的な継承があります。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
はでなく、Hello world
になります。public abstract prop: any;
〜A
を追加しても同じことが起こります。
抽象クラスを使用して継承の全ポイントを共有するのは、this
スコープです。
Typescriptで正しく行うにはどうすればよいですか?ここで
です。リンゴ(B)は果物(A)ですが果物はリンゴがありません。 継承により動作が追加または変更されます。あなたのBはAにプロパティを追加します。したがって、Aにはプロパティがありません。 – chris01
@chris詳しい説明は? – Aris
あなたはAのインスタンスもBのインスタンスであると仮定しています。それは真実ではない: 'C extends A {}'はAを拡張し、propプロパティを持たないクラスを定義する。 –