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

私はAngularJSも使用しており、お互いのつま先を踏んでいるので、プロジェクトにAMDをドロップすることになりました。ずっと同じDIパターンを使い続けていたので、最終的にはこんな感じになりました。

私はそれでかなり満足しています。私は代わりにクラスを使用して実験しています (モジュールをステートレスに保ち、コンストラクターをインジェクター関数にすると、非常に近くなります) が、thisすべての依存関係に使用する必要はありませんでした。

また、クラスは実際には何も購入しません。なぜなら、インターフェイスにコーディングする場合、とにかく型を 2 回定義する必要があるからです。

interface IMyService {
  doSomething();
}

module.exports = function(SomeOtherModule) {

  return {doSomething: doSomething}

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