TypeScriptコンパイラが私に悲しみを与えないようにするのに問題があります。私は、クラスのインスタンスではなくクラスの配列を持つコントローラを持っていますが、クラス自体です。これらのすべては、同じベース、UnitView
から拡張されます。 TitleView
もジェネリックを受け入れない場合は何らかの理由でエラーが発生しますが、エラーが発生した場合はエラーは発生しません。一般的なクラスのTypeScript配列
なぜTitleView
がモデルタイプを明示的にUnitView
に渡すので、ジェネリックスを受け入れる必要があるのか分かりません。誰かが私が間違っていることを説明したり見たりすることはできますか?
コード:
class Model { }
class View<TModel extends Model> {
private model: TModel;
}
class UnitView<TModel extends Model> extends View<TModel> { }
class TitleView extends UnitView<Model> { }
class Controller {
private ViewClass: typeof UnitView;
private ViewClasses: typeof UnitView[] = [
TitleView
]
}
そしてhereあなたはそれをテストしたい場合は活字体の遊び場への直接リンクですが
だから私はのオフに拡張したクラスの配列になります配列を表現したい場合は、これを書くための正しい方法であるものユニットビュー? – jas7457
ジェネリックを保存する必要があります。 'more'として答えるために追加されました – basarat
TitleViewが本当にジェネリックを受け入れるべきではないので、別の方法があることを期待していました。それはその行の終わりであり、Modelはその時点で明確に定義されています。私はちょうど代わりに任意の配列に型を変更することがあります。このデザインは私には欠陥があるようですが、それを完全に理解していないかもしれません。助けてくれてありがとう。 – jas7457