私は基本クラス、コンポーネントを持っています:
module abc {
export class Component {}
}
この基本クラスを拡張するさまざまなクラスもあります。
module cde {
export class Position extends abc.Component {}
}
さて、ほとんどコンポーネントだけを含むエンティティ クラスがあります。
module abc {
export class Entity {
add(component: Component) {}
}
}
なぜ私は次のことができないのですか:
var entity = new abc.Entity().add(new cde.Position());
コンパイラはArgument types do not match parameters
、私の Position クラスが、 add メソッドが期待する型である Component クラスを拡張しているにもかかわらず、不平を言います...
それをに変更する
var entity = new abc.Entity().add(<abc.Component>new cde.Position());
コンパイラのエラーを満たしますが、そのように明示的にダウンキャストする必要がある理由がわかりません..
Breeze's answer を読んだ後、実際のコードを取り出し、無関係な部分を切り取り、プレイグラウンドに貼り付けました...コードが実際に機能することを確認してください。たぶん、IntelliJ の typescript の実装に問題があるのでしょうか? 調査を続けます。