3

尝试以具有依赖关系的功能样式使用 TypeScript,我感到很受打击。假设我想制作一个依赖于另一个模块的模块。

如果我没有使用依赖注入,它看起来像这样(在节点中)。

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

这就是我使用依赖注入的方式

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

  return {doSomething: doSomething};
}

在打字稿中,如果您定义了一个具体的类或模块,您可以在导出函数时键入函数或将它们包含在类中。都在旁边。

但是由于我无法在 DI 函数中定义模块所以我能看到的唯一方法是为我单独返回的对象定义一个接口,这很烦人,因为我想要类型符合定义的注释。

有什么更好的方法来做到这一点?

4

2 回答 2

2

这可能会给你一个好的开始:http ://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/

我不知道这是否是最好的设置方法。但我得到了它的工作。

于 2012-11-09T20:58:41.293 回答
0

我最终在我的项目中放弃了 AMD,因为我也在使用 AngularJS,而且他们互相踩到了对方的脚趾。我确实一直使用相同的 DI 模式,所以最终看起来像这样。

我很满意。我尝试使用类来代替(如果您保持模块无状态并将构造函数作为注入器函数,您可以非常接近),但我不喜欢必须使用this所有依赖项。

此外,类实际上并没有给我买任何东西,因为如果我要对接口进行编码,无论如何我都必须定义两次类型。

interface IMyService {
  doSomething();
}

module.exports = function(SomeOtherModule) {

  return {doSomething: doSomething}

  function doSomething() {
    SomeOtherModule.blah()
  }
}
于 2012-11-12T14:25:28.373 回答