2016-05-09 10 views
10

typescriptここ数ヶ月から私はまだ名前空間とモジュールの違いを理解していません。タイプスクリプトの名前空間とモジュールの違い

私は内部と外部モジュールそれらが命名された前のことを知っているが、両方で、私は他のファイルからクラスをインポートすることができます。だから実際のの違いは何ですか?

+2

[名前空間とモジュール](HTTPS上の「魔法」を使用する必要があります。 あなたはこれらの世界的にこの方法のすべてにアクセスできます。 //github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md) –

+0

ECMAScriptで「モジュール」と呼ばれていた「モジュール」と呼ばれていたタイプスペースは、モジュール標準。 ESにはモジュール標準があり、TSは「モジュール」を「名前空間」に改名し、ESモジュールのサポートを追加しました。私は、今後の名前空間を使う本当の理由はないと思います。 – Aaron

+2

@Nitzan Tomerの "Namespace and Modules"を読んで、もっと混乱しました。だから、私はモジュールだけを使わなければならないと思いますか? –

答えて

3

名前空間は、出力されたJavascriptコードでモジュールローダーを使用したくない場合に、TypeScriptのコードを構造化する方法です。

ネームスペースとモジュールの詳細は、ハンドブックhereにあります。

2

TS-handbook に記載されているように、「内部」&「外部」の2種類のモジュールがあります。内部モジュールのコードはTypescriptで書かれ、 "外部"はJavascriptで書かれています。

、彼らは次のように名前を変更することを決定した新しいECMAScript 2015の用語と一致させるために:

  1. 『内部モジュールは、』今 『の名前空間』です。 ECMAScriptの
  2. だから、

に並ぶよう

  • 「外部モジュール」には、今、単に「モジュール」です:

    • クラスがあるモジュールを使用する場合は、あなたのコードを書く方法は
    • 異なっています名前空間を使用しながら、グローバルスコープ内に露出していない:

    例:

    パブリッククラスClassDを公開する公開名前空間シーケンスNamespaceA.NamespaceB.NamespaceCがあるとします。 window.NamespaceA = NamespaceA

    を言わず

    window.NamespaceA 
    window.NamespaceA.NamespaceB 
    window.NamespaceA.NamespaceB.NamespaceC 
    window.NamespaceA.NamespaceB.NamespaceC.ClassD 
    

    、あなたはモジュールを使用する場合は、

  • 関連する問題