2016-04-08 3 views
0

私はTypingsファイルをインポートすることに関して非常に混乱しています。それを行うには非常に多くの方法があるようです。Typescript:(新しい)TYPINGSファイルを正しい方法で(ノード内に)必要としますか?

私はnodejsプログラムを作成しています。

私はタイピング(ない周囲のモジュール)を介してmomentJSをインストールし、私はそう

var testOne = require('moment/moment'); 

import * as testTwo from 'moment'; 

import * as testThree from 'moment/moment'; 

すべての3つの方法が作業していると思われるようにそれをインポートすることがうまく管理しています。最初のオプションは、元のノードは私が慣れている方法を必要としています...他の2は、タイスクリプトのインポートであるようです。

私は一瞬のディレクトリ構造と瞬間を使用していますが、それらは同じように機能するようです。

私はタイピング/ブラウザを無視しています...

だから、今のところ私のディレクトリ構造は、実際に私は一瞬たり瞬間/瞬間を使用する必要があり、ここで

 /typings/main/definitions/moment/index.d.ts 

保存されていますか?

私はドキュメントをチェックしようとしましたが、私は正しく理解していないのですが、どのインポートを使用するのか分かりません。

タイピングに関しては??

私は誰かが今、円で回っているようだから助けてくれることを願っています。

タイピングは、私がmomentjsをインストールするために使用するコマンド事前に

typings install moment 

おかげで

+0

私も試したことが1つありましたが、失敗し、構文エラーが発生しました。次の形式でした。import testFail = require( 'moment/moment');私はgoogleへの私の旅行でこのような例を見た。 – Martin

+0

これも{z}から 'moment/moment'にインポートできません。 – Martin

答えて

1

import * as testTwo from 'moment';var testOne = require('moment');の両方が有効で、モジュールをインポートする正しい方法ました。

違いは、デザイン時に最初に型定義が読み込まれるため、intellisenseが機能し、コンパイラはその要素をサポートするIDEを使用しているかどうかを確認します。 TypeScriptプロジェクトでは、最初のものが2番目のものより優先されます。しかし、ここで重要なのは、コンパイルと実行が期待どおりであることです。

import * as testTwo from 'moment/moment';およびも有効ですが、使用しないでください。

moment/momentモジュールは、レジストリから定義をダウンロードするときにtypings(内部のみmoment.d.ts)によって作成されます。それは競合を防ぐために見つけた方法です。レジストリから元のmoment.d.tsファイルを見てください。これはローカルシステムにあるファイルとは異なります。

それ以上のことは、これを比較するには不適切なライブラリを選択したことになります。 require('moment/moment')は、ルートmomentのプロジェクトパス内にmoment.jsというファイルが存在するためにも機能します。しかし、これは一般的ではありません。すべてのパッケージがこれを行うわけではありませんので、避けてください。パッケージは単にその名前を参照するだけで使用されます。

関連する問題