2015-09-08 21 views
6

私はSystemJS/jspmTypeScript definition managerを使用するTypeScriptでAureliaアプリケーションを構築しています。私は.tsのソースファイルを/app/**.d.tsのファイルの下に/typings/**/jspm_packages/**(jspmでいくつかの定義ファイルが出荷されています)の下にあります。TypeScript型定義の参照

明らかに、TypeScriptコンパイラはSystemJS/jspmまたはTSDを理解していないので、どうにかそれらが管理する型定義を参照する必要があります。私はソースと定義の両方を参照するようにすべての.tsファイルをコンパイラに渡そうとしましたが、これはすべての型定義によってインポートされたすべての型定義をダウンロードする必要があるウサギの穴につながります。それは型定義inception(最終的に私はあなたが型定義が好きと聞いた)です。コンパイラは、にエクスポートし、ソースによって直接参照される型定義によってのみ気にする必要があると考えています(ではありません。はこれらの定義によってをインポートしました)。

とにかく、私はこれについて間違ったやり方をしていると感じていますし、定義ファイルを参照する方が良い/正しい方法があるのだろうかと思っています。

PS:そこにはエディタ/プラグインを含むいくつかのソリューションがあるようですが、これは自動ビルドの一部であるため厳密なCLIアプローチを探しています。

+0

入力フォルダをアプリフォルダ内に移動しようとしましたか?この方法でそこに住んでいるtsconfig.jsonファイルは自動的にあなたの宣言を受け取ります(そしてjspmの他のパッケージではありません) – Brocco

+0

宣言はうまくいきますが、問題はそれがすべての型の参照(インポート)に従うことです定義。たとえば、私はlib Aを参照するlib Aを参照しているとしましょう。lib Aの型定義だけを含める必要があります。しかし、それはlib AとBの両方の型定義を含める必要があります。 – hcoverlambda

+0

tsdあなたのためにそれを処理する必要があります...私は自動的に私のためにjqueryをもたらすtsdを介して角の定義をインストールする場合。 – Brocco

答えて

1

ファイルの参照が嫌いです。私がしていることは、tsconfig.jsonに "excludes"オプションを使用することだけです。これにより、すべての入力ファイルが私のプロジェクト全体に組み込まれることが保証され、<reference>を使用する必要はありません。

だけthe followingのTSconfigを使って、あなたが行くように良いことがあります:

{ 
    "compilerOptions": { 
    "target": "es5", // or es6 
    "module": "system", 
    "sourceMap": true, 
    "declaration": true 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

Here's、そのモジュールの私のメインファイル。宣言ファイルへの参照がないことに注意してください。