2017-02-06 7 views
3

私は既存のTypeScript AngularJSプロジェクトに取り組んでいます。今私はd3jsを使用したいと思いますが、私は手動でd3js typescriptをダウンロードする必要があります(d3は100万のファイルで作られています)。そしてd3js min javascriptをダウンロードしてください。企業のプロキシは、依存関係などをダウンロード/管理するためのツールを使用できないため、私は手動オプションしか持っていません。TypeScriptプロジェクトからJavaScriptライブラリを呼び出す方法は?

したがって、私は単純にindex.htmlのd3jsをインポートし、d3 tsバージョンを使用せずにTypeScriptからd3jsを直接呼び出すことを好みます。

です

var svg = d3.select("svg"), 
    margin = {top: 20, right: 20, bottom: 30, left: 40}, 
    width = +svg.attr("width") - margin.left - margin.right, 
    height = +svg.attr("height") - margin.top - margin.bottom, 
    g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

var x = d3.scaleBand() 
    .rangeRound([0, width]) 
    .paddingInner(0.05) 
    .align(0.1); 

が、その後、私はコンパイルエラーはこのJavaScriptオブジェクトが別の場所で定義されており、それはそれについて何も想定してはならないことを活字体に伝える方法があり、「名前d3を見つけることができません」を取得?

d3 jsが100万個に分割されているのは残念です...それは非常に有用ではないことがわかります。をselectなしで使用するのは誰ですか?これは私には意味がありません。

+1

これは役に立ちますか? plunkerを確認してくださいhttps://embed.plnkr.co/EUdDLvo9sNrmujhwE9s7/ – MMK

答えて

7

定義ファイルは、tsソースをjsにコンパイルするためにのみ必要です。jsを実行するためには必要ありません。

それは@typesでそれを使用するのが最も簡単でしょう:手動で定義ファイルをダウンロードして、ソースの近くに配置し、それを参照する、その後、

npm install --save @types/d3 

あなたがそれを行うことができない場合は、次の

/// <reference path="PATH_TO_D3_D_TS" /> 

あなたにもそれを宣言することを行うことができない場合:

declare const d3: any; 

のThコンパイラに変数d3が存在し、タイプがanyであることを通知するので、例外を使用しないようにしてください。

+0

本当にありがとう、第三の選択肢は私の問題を解決します。最初のものはプロキシーのためにできません。第2のものは悪夢です。なぜなら、「間違いなくタイプされた」ts d3ファイルがあり、それをチェックするだけでなく、3番目の選択肢は残念なことに妥当なものです。 –

+2

あなたはいつも 'npm install @ types/d3'を別の環境で実行することができます(あなたの家を考えましょう)。そして' node_modules/@ types/d3'フォルダをコピーしてください。私が列挙した第3のオプションの問題は、コンパイラが 'd3'を使うときにあなたを助けることができないことです。 –

関連する問題