1

オブジェクト管理のほとんどを処理するデータ ライブラリがあるとします。リソースごとに、独自のプロトタイプ関数を追加する基本クラスを選択できます。

たとえば、私が持っている場合、

  interface IJob
  {
     openJob();
  }
  class Job : IJob
  {
     openJob() => {console.log('open');}
  }

次に、Store.job.create(); でジョブを作成します。クラスのインスタンスを返しますが、.save()、.update() などのプロトタイプ関数で装飾します。

問題は、ジョブ インスタンスで .save() を使用しようとすると、インターフェイスで定義されていないため未定義になることです。これを定義すると、クラスに .save/.update を定義することが期待されますが、これは、ストアが既にクラスにプロトタイプ関数を追加しているため、実際にはやりたくないことです。

これを処理する最良の方法はありますか?

参考までに、js-data をデータ ストア ライブラリとして使用しようとしています。

4

1 に答える 1

2

これを定義すると、クラスに .save/.update を定義することが期待されますが、これは、ストアが既にクラスにプロトタイプ関数を追加しているため、実際にはやりたくないことです。

あなたが探しているのはミックスインです。また、ミックスインの公式リンクもあります: https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Mixins.mdは、定義していなくてもクラスでこれらを宣言する必要があることを示していますそれら(そしてそれらは混ざります)。

于 2015-11-04T07:22:07.810 に答える