2016-03-01 17 views
7

私はTypescriptチュートリアルでNodeJSを見つけられませんでしたので、私は無計画にダイビングしていますし、十分な質問があります。私はこの2行の違いを理解していませんインポートの違いhttp = require( 'http'); * 'http'からhttp *としてインポートします;

import * as http from 'http'; 
// and 
import http = require('http'); 

を彼らは同じように機能しているようだが、私は彼らの行動や他のそれらのいずれかにいくつかのニュアンスは、おそらくありますが、おそらく存在しない想像します。

最初のアプローチでは、モジュールから選択的にインポートすることができますが、モジュールのすべてをインポートする場合、2つの違いがありますか?好ましい方法がありますか?自分のファイルからインポートするとどうなりますか?

+0

[Typescript import/as vs import/require?](http://stackoverflow.com/questions/35706164/typescript-import-as-vs-import-require) – rgvassar

+0

[新しいes6構文の可能な重複commonjs/amdモジュールをインポートするために\ 'import foo = require( 'foo')\'](http://stackoverflow.com/questions/29596714/new-es6-syntax-for-importing-commonjs-amd-modules- ie-import-foo-require) –

答えて

4

は、あなたが(完全にクリーンな)あなたのコード内でのhttpオブジェクトを作成し、その後、インタプリタはHTTPモジュール内の各インポートできるようになりますと、一つ一つを、それを追加し、へHTTPコード内オブジェクトは、これはあなたが、新しいHTTPオブジェクトにこの参照をコピーし、HTTPモジュールで定義されてmodule.exportsはオブジェクトを取得している第二の形式よりも(あまり)少し遅いですあなたのコードでは、これは特定のコンテキストを持つノード特殊関数内のオブジェクトです。モジュールの内容

1

モジュールタイプを共通JSに設定したノード環境では、出力は同じになります。他のモジュールフレームワークでは、異なる構文を使用し、最初のアプローチを使用することで、自由に変更する柔軟性が得られます。

また、import * as http from 'http';のアプローチについては、ES6モジュールのインポート構文であるため、ES6を完全にサポートする環境にいったん設定すると、インポートが正常に機能します。最初の形式で

関連する問題