2016-10-30 10 views
2

私はWebアプリケーション用にJavaアプリケーションを移植する必要のある経験豊富なJava開発者で、これを行うためにTypescriptの使用を検討してきました。当分の間、私は従来のJavaスタイルのパッケージをフォルダの階層と "リーフ"ファイルごとに1つのクラスにしておきたいと思います。従来のフォルダ階層のTypeScriptクラス

私はTypescriptのドキュメントを見ていて、../path/to/moduleのようなものがあります。すべてはそのような相対的なものを含んでいますか? import com.ancient.java.MyType;に似た何かを得ることができるベースディレクトリオプションがありますか?

また、Typescriptでpackage com.ancient.java;何かを行うと宣言していますか?

私は、ドキュメント上で見てきたが、私は、内部および外部の名前空間と輸出に関するすべての話を読み、それらを簡単に見つけることないよ、など

誰かが感じられるでしょう何かにこれを煮詰めることができます私のためのJavaのようなものから始める?私は必要に応じて後ですべての複雑なものにベビー・ステップ・アップすると確信しています。これはコード内でどのように見えますか?

答えて

4

typescriptクラスをファイルごとに1つのクラスに整理し、整理されたフォルダ階層にすることは完全に受け入れられ、typescriptでも奨励されます。

typecript 2.0以上を使用している場合、パスは相対パスである必要はありません。 baseUrl:プロパティを使用して、非相対パス(つまり、.または..はありません)のルートを指定します。

tsconfig.json 
src/ 
    foo/ 
     foo.ts 
    bar/ 
     bar.ts 

あなたが"baseUrl": "./src"を設定することができ、その後、あなたの可能性import 'foo/foo'import 'bar/bar'相対パスのナビゲーションを使用しない:あなたの例のために持っていました。

typescriptでパッケージ/名前空間/内部モジュールなどを宣言しようとするのはお勧めしません。これらのタイプのものは、ほとんどが過去の遺物であり、私が新しいプロジェクトで使用するためにベンチャーにするものではありません。

ファイルベースのモジュールに固執することをお勧めします。これは、アプリケーションを構成するための近代的な推奨アプローチです。

importまたはexportステートメントを持つファイルは、「ファイルモジュール」とみなされます。その中に定義されているすべてのものは、ファイルに対してプライベートであり、グローバル名前空間を汚染しません。共有する必要があるものは、他のファイルからエクスポートしてインポートする必要があります。

src/ 
    com/ 
     ancient/ 
      my-type.ts 

my-type.tsは、次のようになります:

たとえば、あなたはこのようにファイル構造にMyTypeクラスを書くことができ

export class MyType{ 
    constructor(){ 
     console.log('Hello World'); 
    } 
} 

、その後、あなたは次のように他のファイルでそれをインポートできます。

import {MyType} from 'com/ancient/my-type' 

キーを使用する必要はありません単語namespaceまたはmodule。これらは主に型宣言ファイルでのみ検出されるものです。

+0

2つの小さな点があります。 1つの「外部モジュール」はまさにES2015モジュールであり、落胆してはいけません。 2つ目は、 'declare module'はまだ.dで頻繁に使用されています。従来のファイルだけでなく、tsファイル – Paarth

+0

あなたはもはや「外部モジュール」と呼ばれていませんが、正しいです。公式には彼らはちょうど "モジュール"ですが、ファイル自体がモジュールであり、デカールモジュールを使用していないことを強調するために、 "ファイルモジュール"と呼んでいます。現代の宣言ファイルでは、あなたは潜在的な使用について正しいです。私は特定の用途を考えていましたが、モジュールを再オープンしてそのタイプを増やす能力など、他の用途を考えていませんでした。混乱を避けるために関連する編集を行いました。 – dtabuenc

関連する問題