TypeScriptでAngular 2を使用してフロントエンドアプリケーションを構築しています。私は、ジェネリックリポジトリクラスを持っている:TypeScript、Angular 2依存性注入(継承あり)
export abstract class Repository<T extends IEntity>
{
constructor(protected _http: Http) {}
add(entity: T) {}
delete(entity: T) {}
list() {}
get(id: number) {}
update(entity: T) {}
}
私のサービスクラスはその後、私の一般的なリポジトリクラスを拡張します。
export class Service extends Repository<Entity>
{
constructor(protected _http: Http) {
super(Http);
}
}
私は親クラスの依存性注入を使用する際に問題が発生します。それを子クラスにどのように変換するのですか?
活字体は、私は次のエラーを取得するコンパイル:
error TS2345: Argument of type 'typeof Http' is not assignable to parameter of type 'Http'.Property '_backend' is missing in type 'typeof Http'
イムないこのエラーを修正する方法を確認してください。どんな助けでも大歓迎です。
ありがとうございます。私は少しフォローアップの質問をお願いします。子クラスは、親クラスがインポートするクラスを継承しますか?例えば。親クラスは、http、応答、およびヘッダーをインポートします。それを親クラスにインポートする必要がありますか、できません。なぜなら、httpをインポートするときにエラーが発生するからです。エラーTS2304:名前 'Http'が見つかりません。私は依存関係を渡さなければならないか、それともすべてのクラスrxjs、レスポンス、ヘッダーなどが必要なのでしょうか? – Dblock247
サブクラスが別のファイルにある場合は、コード内で参照するすべてのクラスまたは他の識別子をインポートする必要があります。あなたの '* .ts'ファイル(' X'は別のファイルで宣言されているクラスの名前です)のどこかで 'X'を使うと、そのクラスをインポートしてファイル内で知ることができます。説明するのはあまり簡単ではありません。これで明らかにならない場合は、後続の質問を残しておいてください;-) –
_httpをプライベートにする必要がある場合は、子のコンストラクタがパラメータを取らないように親のプライベートなメンバーですか? – Shawn