我正在處理一些軟件包。他們導出類。一般概念是有一個定義數據存儲區行爲的核心包,然後是一個postgres包,它爲postgres實現一個數據存儲區,另一個使用redis存儲區實現相同的事物,等等。避免賦值錯誤與依賴關係的最佳做法?
我的問題是在我的依賴關係樹,因爲基本的數據存儲對rxjs的依賴,以及一些插件模塊也參考rxjs的。所以:
+ node modules
+ -- core
+ rxjs 5.4.0
+ -- postgres
+ rxjs 5.4.1
除非核心和Postgres模塊聲明對完全相同相同版本rxjs的依賴,這兩種不同的rxjs包不會得到重複數據刪除。
它們實際上是相同的版本,但它們不是。我明白了。我可以在那裏處理角落案件。問題是,我再也不能說
const pgstore: Store = new PostgresStore();
,因爲我根本無法分配PostgresStore(在我的Postgres包裝聲明)到通用存儲變量(在我的核心包申報),因爲有兩個不同的版本rxjs,因此Subject<string>
我在商店中存儲爲私有屬性最終是兩種不同類型的主題,並且這些不可交叉指派。 (例如,編譯失敗,因爲「主題不能鍵入主題,有兩個不同類型的名稱存在,但它們是無關的。」)
我必須想象,這並不罕見。什麼是最佳實踐(構建依賴關係,依賴關係等)以避免這種掛斷?它基本上導致了一個非常脆弱的安裝,並且有一段時間,我不得不花費一個小時擺弄npm和我的package.json文件以正確地重複刪除東西(這也會干擾我使用npm link
爲本地開發依賴項的能力包,因爲這使得重複更加困難)。
嗯,似乎至少有一部分答案是:不要使用私有/受保護的成員。他們最終將打字稿從結構改爲主格打字(有效),這可以被看作是「正確但可怕」的行爲。 – pfooti