2017-09-27 54 views
0

我有幾個無狀態類來完成一些業務邏輯並返回一些計算結果。它們中的每一個自然都有一組其他類的依賴關係。在Typescript中導出可測試函數的適當類設計是什麼?

現在有兩種設計,我已經雜耍之間:

  1. 有一個類,其中每個方法是一個靜態方法。我可以使用jess import mocking來覆蓋測試的依賴關係。優點是你只有一個類實例。

  2. 擁有一個具有常規非靜態方法的類。這需要在每個使用它的地方實例化類。我可以在構造函數中傳入類依賴關係。測試這非常簡單。缺點是你在代碼中創建了多個類實例和潛在的依賴關係。

以下哪些是首選的慣用TS方法?

也有使用IoC容器的經典解決方案,但我想避免這種情況,因爲此應用程序相當小,並且不想增加額外的膨脹。

此外,不想導出純函數和放棄所有類,因爲這意味着我會失去自動導入類(在VSCode中)。

回答

0

此外,不希望導出純函數和放棄所有類,因爲這意味着我會失去自動導入類(在VSCode中)。

你能解釋一下這個「自動導入類(在VSCode中)」嗎?在VSCode中,我使用的擴展名爲TypeScript Importer,它爲任何類型(class,functionliteral ...)添加適當的導入,不僅適用於類。

無論如何,IMO,這是「純粹的功能」方法,更多的JavaScript慣用法,至少對於那些喜歡JavaScript函數編程功能的人(包括我)來說。對於TypeScript也是如此,即使對類和類似C#/ Java的面向對象編程也表示同情。

如果你真的喜歡類,避免靜態,即選項#1。您可以在引導應用程序(如DI容器可以執行的操作)的情況下實例化和共享實例,以避免多個實例。

TypeScript之間的耦合由於其結構類型而不是一個問題:一個類可以作爲一個接口→如果A類依賴於B類,那麼總是可以爲類A提供一個類B對象。