2012-11-20 16 views
5

Backbone.d.tsを使用してバックボーンアプリケーションを作成している人がいます。議論したいユースケースが2つあります。平野JSキャンプ1のものについては 周囲宣言スタイルとモジュール

を使用してAMDローダーを使用して、モジュール(またはCommonJS私も仮定)

  • は、基幹アプリケーションを作成すると、バックボーン・アプリケーションを作成

    1. は、それが必要であるバックボーンモジュールを外部として定義して、モジュールをインポートしてdefine()ラッパーに含めることができます。

      キャンプ2の場合は、インテリセンスを使用し、importステートメント/ define()ラッパーの使用を必要としないために、バックボーンモジュールを内部モジュールとして定義する必要があります。

      質問:モジュールを定義して、両方のケースで使用できるように他の方法がありますか?


      私は本当にあなたがどちらか

      // required for those using import (1) 
      declare module "Backbone" { 
      

      または

      // required for those not using import (2) and backbone already exists in the global scope 
      declare module Backbone { 
      

      、まだあなたと一緒に取得することができるように持つことができるようにちょうどフォークを作成する必要がありますする必要はありませんコード/インテリセンス。

  • 答えて

    2

    コンパイラがモジュールの種類を知る必要がありますので、これはちょうど1 .d.tsファイルを使用して行うことができませんどのような種類のコードを生成するかを知るために、バックボーン用に使用しているシステムです。 1つのファイル内で内部モジュールと外部モジュールを混在させてマッチングさせることができ、特にバックボーンに使用していたものを正しく推測する方法はありません。

    interface宣言を使用して、大部分のものを正確に1か所に宣言し、 "バックボーン - 内部.dts"と "バックボーン - 外部.dts"その共通の宣言ファイルを参照しているファイルですが、それができる範囲は、APIの表面領域がどのように見えるかによって決まります。

    TL; DR:キャンプ1とキャンプ2は、同じファイル内であっても互いに排他的ではありません。

    2

    私はこれをTypeScriptチームで提起し、作業項目を開いています。

    私はあなたがコンパイラにモジュールフラグを送信する場合、それはファイルと一致した場合、それはモジュール宣言を取り除く必要があり、ラッパー...あなたは...

    module MyModule { 
    } 
    

    を使用して、すべてのモジュールを書いた場合と提案名。そうすれば、Web、CommonJS、またはAMDで修正することなくコンパイルできるモジュールを書くことができます。

    オリジナルの議論はここにある、そしてそれは作業項目に移動されました:

    http://typescript.codeplex.com/discussions/401397

    +0

    実際、これは非常に異なるものです。あなたのリクエストは、JavaScriptを生成するモジュールに関するものです。この質問は、コンパイラに型を宣言するために使用される 'declare module'に関するものです。 –

    関連する問題