2016-10-26 18 views
1

正しくタイプコピーモジュールを作成する方法を理解するのが少し難しいです。Typescriptモジュールの使用方法

私が達成しようとしているのは、1つのファイルにつき1つのモジュールであり、グローバルスコープに変数が漏れていません。

たとえば、「addItem()」という名前の関数を使用して「shoppingCart.js」というjsファイルがある場合、「shoppingCart.addItem()」を使用してaddItemにのみアクセスできます。 。

これを実現するには、shoppingCart.jsを作成してaddItem()関数を配置しますが、一見するとaddItem()関数はグローバルスコープになっているようです。

shoppingCart.jsのコンテンツを「shoppingCart」というモジュールにラップすると、私がカプセル化を取得したように見えますが、モジュールをインポートすると、名前を二重にする必要があります。例えば:「./shoppingCart」 shoppingCart.shoppingCart.addItemから

輸入ショッピングカート()

私はちょうど何か他のものにimport文で変数を変更することができます知っているが、私はしたくありません、私はちょうど "shoppingCart"をタイプしたいと思う。エクスポートされたすべての関数のクラスと変数にアクセスできます。

"module"というキーワードを使用すべきですか? 私はモジュールのルートで "module"を使い、クラスをオブジェクトコンテナとして使用したいと思いました。

マイtsconfig.jsonは、関心の次のプロパティがあります。

"target": "es5", 
"module": "commonjs", 
"moduleResolution": "node" 

私はそれが違いを作るかどうかわからないんだけど、私は.TSファイルを.jsファイルに変換するためのVisual Studio 2015を許可しています次に、gulpビルドプロセスでbrowserifyを使用して、それらをすべて1つのファイルに連結します。

答えて

1

要するに、

あなたがやっていると仮定しているのは、グローバル関数を使ってファイル全体をエクスポートするだけです。あなたは、クラスを使用して、例えば公衆を作りたいものに基づいて関数を作成する必要がある場合は、次のよう

shoppingCart.ts

export class ShoppingCart { 
    private _cartNum: number; 

    constructor(){ 
     this._cartNum = 1; 
    } 

    public class getCartNum(){ 
     return this._cartnum; 
    } 
} 

クラスが使用できるようになりました。

cartCaller。 ts

import {ShoppingCart} from './shoppingCart'; 

const cart: any = new ShoppingCart(); 
console.log('You have : ' + cart.getCartNum() + ' carts'); 

これはあなたの質問にお答えします。

- 編集: これは、tsのモジュールを詳細に理解するのに役立ちます。

How do I use namespaces with TypeScript external modules?

+0

ありがとうございます。 私は、 "export"というプレフィックスを持つ "module"内に何かを公開しようとしています。 なぜモジュールキーワードを使用するのが間違っていましたか? "module"キーワードは名前空間と同等であるかもしれません。それは正しいと思いますか? – Steviebob

+1

私は専門家ではありませんが、実際にあなたが何をしているかによって異なります。実際のキーワード 'module'は、定義ファイル(somefile.d.ts)の入力に使用されています。私はモジュールキーワードを直接使用するインスタンスには入っていません。そのことを念頭に置いて、私は通常、tsドキュメント内のモジュールを見ると、ファイル(別名モジュール)の名前空間を参照していることに同意します。それは役に立ちますか? – CriCri

関連する問題