Javascript Typescript中的闭包(依赖项注入)
我在尝试使用带有依赖项的函数式类型的TypeScript时被踢了屁股。假设我想制作一个依赖于另一个模块的模块 如果我没有使用依赖项注入,它会是这样的(在节点中) 这就是我使用依赖注入的方式Javascript Typescript中的闭包(依赖项注入),javascript,dependency-injection,functional-programming,typescript,Javascript,Dependency Injection,Functional Programming,Typescript,我在尝试使用带有依赖项的函数式类型的TypeScript时被踢了屁股。假设我想制作一个依赖于另一个模块的模块 如果我没有使用依赖项注入,它会是这样的(在节点中) 这就是我使用依赖注入的方式 module.exports = function(SomeOtherModule) { function doSomething() { SomeOtherModule.blah() } return {doSomething: doSomething}; } 在typescript
module.exports = function(SomeOtherModule) {
function doSomething() {
SomeOtherModule.blah()
}
return {doSomething: doSomething};
}
在typescript中,如果定义了具体的类或模块,则可以在导出函数或将其包含在类中时键入函数。挨着就行了
但是由于我不能在DI函数中定义一个模块,所以我能看到的唯一方法就是为我单独返回的对象定义一个接口,这很烦人,因为我想让类型注释与定义保持一致
有什么更好的方法可以做到这一点?这可能会给你一个好的开始:
我不知道这是否是最好的设置方式。但我成功了。我在项目中放弃了AMD,因为我也在使用AngularJS,他们互相攻击。我一直在使用相同的DI模式,所以最后看起来是这样的 我很满意。我用类来代替实验(如果你让你的模块保持无状态,并且让构造函数成为注入器函数,你可以非常接近),但是我不喜欢对所有依赖项都使用
这个
而且,类实际上并没有给我买任何东西,因为如果我对一个接口进行编码,我就必须定义两次类型
interface IMyService {
doSomething();
}
module.exports = function(SomeOtherModule) {
return {doSomething: doSomething}
function doSomething() {
SomeOtherModule.blah()
}
}
是的,我可以让事情顺利进行,我只是对完成后的样子不满意。现在,我将只在顶部指定接口。
interface IMyService {
doSomething();
}
module.exports = function(SomeOtherModule) {
return {doSomething: doSomething}
function doSomething() {
SomeOtherModule.blah()
}
}