2016-04-25 14 views
1

私は活字体で大きな角度アプリを作成しようとしていると私は私のアプリは、以下のフォルダ構造とレイアウトさ欲しい:活字体のインポート構文

./App
--- コントローラ
--- --- HomeController.ts
--- --- SomeOtherController.ts
--- ディレクティブ
--- --- MyDirective.ts
--- app.ts

また、すべてのコントローラがMyApp.Controllers名前空間にあるように、名前空間/モジュールをレイアウトすることもできます。したがって、上記の例では、私はモジュール内の2つのコントローラを持っていると思います:

MyApp.Controllers.HomeController
MyApp.Controllers.SomeOtherController

私は、次の操作を行ってこれを設定:

にHomeControllerを。 TS

export module MyApp.Controllers { 
    export class HomeController { 
     ... 
    } 
} 

SomeOtherController.ts

export module MyApp.Controllers { 
    export class SomeOtherController { 
     ... 
    } 
} 

今app.tsに、私は私のコントローラのすべてをインポートしたい、と私は問題に実行しているところ、これは、私が試してみてください。

import * as Controllers from './controllers/HomeController' 

が、その後、私は持っているコントローラにアクセスするにはする:

Controllers.MyApp.Controllers 

これは醜いです。また、他のファイルからコントローラを取得するにはどうしたらいいですか?理想的には、 "MyApp.Controllers"という名前空間内のすべてをインポートしたいと思い、コード内にMyApp.Controllersのプレフィックスを付けることなく使用することができました。

答えて

3

あなたは、名前空間を使ってコードを整理するC#/ Javaのような言語には普通の考え方から離れなければなりません。 typescriptの場合、フォルダやファイルがあるファイルシステムと同様のアプローチを使用してコードを整理します。

  • 各ファイルは既にモジュールであるため、tsファイルの中にexport moduleを取り除いてください。
  • 論理的に結合されたクラスを1つのファイル内にグループ化します。ファイルごとに1つのクラスが理想的です。
  • アプリケーションをさらに構造化するために、フォルダ内でファイルをグループ化します。

だからあなたの場合にはexport moduleを削除した後、あなたは、このようなコントローラを使用します。

import {HomeController} from './controllers/HomeController' 

をこの情報がお役に立てば幸いです。

+0

これは役に立ちます!ちょうど興味のために、 "輸出モジュール"の目的は何ですか?それはいつ使うべきですか? – Mikeb

+0

本当にたくさんのクラス/インターフェースを1つのファイルにエクスポートする何らかの理由で、 'export module'や' export namespace'を使用することができます。しかし、そのような場合、私は個人的に2つのファイルを作成することを推奨します。もっと詳細な説明については、これを読むのは素晴らしいスレッドです:http://stackoverflow.com/questions/30357634/how-do-i-use-namespaces-with-typescript-external-modules – Amid

0

"醜い" Controllers.MyAppからどうやって抜け出すのか分かりません。コントローラでは、完全修飾名前空間+名前を指定する必要があります。

今、IMHO(私の謙虚な意見では)は、これについて「醜い」ものはないと思います。 名前を別の名前空間から参照する場合は、名前を完全修飾する必要があります。しかし、同じ名前空間から参照する場合は、完全な名前は必要ありません。意味がありますか?

さらに、すべての参照を単一の.TSファイル(例:Reference.ts)に追加し、そのReference.tsファイルのみをすべての場所に追加することをお勧めします。この参照ファイルは、ソートされた方法でプロジェクトのすべての.TSファイルを参照します(つまり、コンパイラは上から下に正しくコンパイルできます)。