我试图在具有依赖性的功能样式中使用TypeScript。假设我想创建一个依赖于另一个模块的模块。
如果我没有使用依赖注入,它将看起来像这样(在节点中)。
SomeOtherModule = require("SomeOtherModule")
exports.doSomething = function() {
SomeOtherModule.blah()
}
这是我使用依赖注入
的方法module.exports = function(SomeOtherModule) {
function doSomething() {
SomeOtherModule.blah()
}
return {doSomething: doSomething};
}
在typescript中,如果定义一个具体的类或模块,只需在导出它们时键入这些函数或将它们包含在类中。它可以紧挨着彼此。
但是因为我无法在DI函数中定义里面的模块,所以我能看到的唯一方法就是为我单独返回的对象定义一个接口,很烦人,因为我希望类型注释符合定义。
有什么更好的方法可以做到这一点?
答案 0 :(得分:2)
这可能会给你一个良好的开端:http://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/
我不知道这是否是设置它的最佳方法。但我得到了它的工作。
答案 1 :(得分:0)
我最终在我的项目上放弃了AMD,因为我也在使用AngularJS并且他们互相踩着对方的脚趾。我确实继续使用相同的DI模式,所以它最终看起来像这样。
我很高兴。我尝试使用类代替(如果保持模块无状态并且构造函数是注入器函数,则可以非常接近),但我不喜欢对所有依赖项使用this
。
另外,类实际上并没有给我任何东西,因为如果我编写接口,我必须两次定义类型。
interface IMyService {
doSomething();
}
module.exports = function(SomeOtherModule) {
return {doSomething: doSomething}
function doSomething() {
SomeOtherModule.blah()
}
}