私が取り組んでいるパッケージがいくつかあります。クラスをエクスポートします。一般的な考え方では、データストアの動作を定義するコアパッケージ、ポストグル用のデータストアを実装するポストグルパッケージ、レディスストアを使用して同じものを実装する別のパッケージなどがあります。依存関係の割り当てエラーを回避するためのベストプラクティス?
私の問題は私の依存関係ツリーにあります。なぜなら、ベースデータストアはrxjsといくつかのプラグインモジュールに依存しているからです。リファレンスrxjs。だから、コアとpostgresのモジュールは正確 rxjsの同じバージョンに依存することを宣言しない限り
+ node modules
+ -- core
+ rxjs 5.4.0
+ -- postgres
+ rxjs 5.4.1
は、これら二つの異なるrxjsパッケージは、重複排除得ることはありません。
効果的には同じバージョンですが、そうではありません。私はそれを得る。私はコーナーケースを扱うことができます。問題は、2つの異なるバージョンがあるので、私は基本的には、(私のコアパッケージで宣言された)ジェネリックストア変数に(私はpostgresパッケージで宣言された)PostgresStoreを割り当てることはできませんので、私はもはや
const pgstore: Store = new PostgresStore();
を言うことはできないということですrxjsが再生されているため、私がStoreにプライベートプロパティとして保存したSubject<string>
は、2つの異なる種類のSubjectになり、それらは相互割り当てできません。 (たとえば、SubjectがSubject型に割り当てられないためにコンパイルが失敗するなど、この名前の2つの異なる型が存在しますが、関係はありません)。
これは珍しいことではありません。このハングアップを回避するためのベストプラクティス(依存関係、依存関係などの構造化)は何ですか?基本的には非常に脆いインストールになります。そして、しばらくして、npmとpackage.jsonファイルを手にして、適切に重複除外するために1時間を費やさなければなりません(それは、ローカルのdevに従属する人にnpm link
を使用する能力を妨げます)これは、重複をさらに困難にするためです)。
ええと、答えの少なくとも一部は次のようです:プライベート/保護されたメンバーを使用しないでください。彼らは、最終的には、タイプスクリプトを構造的なタイプから名目上のタイプへと(効果的に)変更することになり、これは「正しいがひどい」振る舞いとみなすことができます。 – pfooti