2

我得到我的屁股踢了一腳,試圖在具有依賴關係的功能樣式中使用TypeScript。假設我想創建一個依賴於另一個模塊的模塊。在打字稿(依賴注入)中關閉

如果我不使用依賴注入,它看起來像這樣(在節點中)。

SomeOtherModule = require("SomeOtherModule") 
exports.doSomething = function() { 
    SomeOtherModule.blah() 
} 

這是我如何與依賴注入

module.exports = function(SomeOtherModule) { 
    function doSomething() { 
    SomeOtherModule.blah() 
    } 

    return {doSomething: doSomething}; 
} 

在打字稿做,如果你定義一個具體的類或模塊在類導出他們或包括他們,你可以只輸入功能。彼此相鄰。

但因爲我不能確定裏面模塊的DI功能,唯一可以做的這一點,我可以看到將定義我單獨返回的對象,這是煩人的界面,因爲我想要符合定義的類型註釋。

什麼是更好的方法來做到這一點?

回答

0

因爲我也在使用AngularJS,他們踩在對方的腳趾上,所以我最終放棄了AMD的項目。我一直使用相同的DI模式,所以最終看起來像這樣。

我很滿意它。我嘗試使用類來代替(如果保持模塊無狀態並使構造函數成爲注入函數,可以非常接近),但是我不喜歡使用this來處理所有的依賴關係。另外,類實際上並沒有給我買任何東西,因爲如果我編碼到一個接口,我必須定義類型兩次。

interface IMyService { 
    doSomething(); 
} 

module.exports = function(SomeOtherModule) { 

    return {doSomething: doSomething} 

    function doSomething() { 
    SomeOtherModule.blah() 
    } 
}