活字サイト上の遊び場から継承例を参照してください:私は1行のコードに変更してい基底クラスの活字体へのアクセスメンバー
class Animal {
public name;
constructor(name) {
this.name = name;
}
move(meters) {
alert(this.name + " moved " + meters + "m.");
}
}
class Snake extends Animal {
constructor(name) { super(name); }
move() {
alert("Slithering...");
super.move(5);
}
}
class Horse extends Animal {
constructor(name) { super(name); }
move() {
alert(super.name + " is Galloping...");
super.move(45);
}
}
var sam = new Snake("Sammy the Python")
var tom: Animal = new Horse("Tommy the Palomino")
sam.move()
tom.move(34)
を:Horse.moveでアラートを()。そこには "super.name"にアクセスしたいが、それは単に未定義を返す。 Intellisenseは私がそれを使うことができ、TypeScriptがうまくコンパイルされることを示唆していますが、うまくいきません。 アイデア
偉大な答え、言語仕様への参照に感謝します。たとえば、基本クラスのプロパティアクセサが仮想化されず、派生クラスのオーバーライドアクセサを介してアクセス可能である(メソッドなど)場合のドキュメントについて知っていますか? –
セクション4.8には、これまでに書かれたものすべてが含まれています。「これが理由」ではなく、「これは行動です」という傾向があります。 – Fenton
Steve Fentonに感謝します。私もここで似たような議論をしました:https://typescript.codeplex.com/discussions/418349。言語の不均衡と思われる。私の推測では、JavaScriptサポートの欠如を補うための "回避策"ヘルパーメソッドとは対照的に、発行されたJavaScriptを単純なままにすることが決定されました。 –