2017-01-09 4 views
0

わかりました。私は最も奇妙な日を過ごしています。私は角度cliプロジェクトでjQueryとBootstrapを使用しています。タイプクリプトのタイプファイルをどのように見つけることができず、どこにあるのか指定しなくても私は理解できません。Angular-Cliタイプファイルはどのようにロードされていますか?

例 - :

私は、グローバルな角度-CLI経由でjQueryとブートストラップファイルをロードしています。私もfollowing-のようにjqueryの変数を宣言する必要はありません。

declare var $ : JQueryStatic; 

VSコードは自動的にインテリセンスを取得し、コンパイルが正常に動作します。今ここに

は本当に奇妙なpart-です:

私はtypeahead.jsのようなjQueryのプラグインを使用しています私は何とかfollowing-のようなjqueryのモジュールをインポートする必要があります。

import * as $ from 'jquery'; 

$("#state_input").typeahead({ 
      hint: true, 
      highlight: true, 
      minLength: 1 
     }, { 
       name: 'states', 
       source: this.sourceFactory(this.states) 
      }); 

私がそれをしないと、上記のコードは失敗します。それはメッセージtypeahead is not a functionの実行時間で失敗します。

コンパイルが正常です。

ここでjqueryモジュールを別々にインポートするのは、以前にインポートする必要がなくグローバルにロードされるときに何が変わるのですか?

私は、一貫性の欠如のために本当に私の心を失っています。インストールされているすべてのtypeaheadタイピングがありますかどうかを確認するためにあなたのnode_modules/@typesフォルダを確認してください)

interface JQuery { 
    typeahead(options?:any):JQuery; 
} 

B:あなたはsrc/typings.d.tsで定義されたtypeahead、例えばを持っているかどうかをチェックし

A):私は、3つの異なる可能性を

+0

angle-cli.jsonファイルにスクリプトを追加しましたか? – Jai

+0

@Jai私はangular.cli.jsonにjQueryとbootstrap.min.jsを追加しましたが、私はanglea-cliのどこにでもtypeahead.jsを追加していません。jsonファイル –

答えて

0

を考えることができます。

C)node_modules/@types/jquery/index.d.tsが標準のjQueryではなく、typeahead(do ctrl + f(またはmacを使用する場合はcommand + f)の入力を含むtwitter/bootstrap/typeaheadカスタムバージョン)をチェックし、 )。この場合、フォルダはjqueryと呼ばれることさえできないので、他の不審なフォルダを見てください。

VSコードは、これらの場所のいずれかからオートコンプリート候補を取得しています。タイピングがインストールされているとIDEの自動補完に役立ちますが、必ずしもパッケージがインストールされているとは限りません。そのため、ブラウザで失敗します。

編集:

D)第四の可能性は、タイピングが他の場所で定義されていることとすることができます。あなたのプロジェクトフォルダ内の* .d.tsファイルを検索して、非標準的な場所のどこかに何かが現れるかどうかを確認します。

+0

私はVSCodeが上記の場所からタイプを取得している可能性がありますが、どうやってtypescriptコンパイラがそれらを取得しているのでしょうか? –

+0

あなたの 'angular-cli.json'に含めるファイルはVSコードで無視されますが、VSコードは私の答えで説明されているようにタイプファイルからインテリセンス機能を取得します。後でコンパイルすると(実際にはトランスコンパイルと呼ばれます)、すべてのjsファイルは、すでにJavascriptに入っているので、コンパイラによって「無視」されます。すべてのあなたのTypeScriptコードがJavascriptにトランスコンパイルされます。 'angular-cli.json'で指定されたjsファイルは、あなたのアプリケーションにバンドルされ(そして、縮小され)、残りのアプリケーションで利用可能になります。これはあなたが求めたことをよりよく理解するのに役立ちますか?もしそうなら、答えを更新します。 – AArias

+0

それは私が意味するものではありませんでした。もし私が間違っていれば私を訂正してください。タイスクリプトのトランスバレーターは蒸散のために 'd.ts'ファイルが必要ですか?だから、いつJSに移行するのですか? IDEを見つけるのは賢明かもしれませんが、 'tsc'コンパイラはどこから取得しますか? –