2017-11-15 10 views
0

hereを読むと、モジュールが名前空間になり名前空間が非推奨になりました。タイプコードを整理する可能性はありますか?私のタイプコードを整理して、グローバルな名前空間を汚染されないようにすることはできませんか?

そして、主な質問は、グローバル名前空間を汚染しないようにするにはどうすればいいですか?私の意見では、私には何も残っておらず、それはバニラJSと比較して巨大なデングブレイカーになるだろうから。

+0

ES6モジュールと、WebpackやBrowserifyなどのモジュールバンドラを使用します。 –

答えて

2

モジュールは、アプリケーションを管理するための最良の方法です。 Modules add zero items to the global scopeであり、さまざまなロードオプションが用意されています。

ネームスペースは、グローバルスコープに単一のアイテムを追加するため、2番目に優れています。ネストした場合は、アプリケーションがどれだけ大きくても、すべてのネームスペースを1つのルートに保つことができます。グローバルスコープ内の1つの項目。

名前空間はTSLintルールがモジュールに向けて人々をプッシュするナッジで、廃止されていない - しかし、すべてのTSLintルールと同じように - あなたが担当している、ないツール。あなたのアーキテクチャは、名前空間を使用することを決めた場合は、この構成では、ルールをオフに切り替えることができます。

"no-namespace": false 

モジュール、名前空間、およびベアーズ...私のオハイオ州!

TypeScript 0.8が出てきたとき、「内部モジュール」と「外部モジュール」がありました。これらは後に名前を変更してしまったので、彼らは次のように変更されました:

  1. 内蔵モジュールは
  2. 外部モジュールは、内部モジュールは、「モジュール」

になった、それだけで意味変える「名前空間」になった:

module OrderProcessing { 

へ:

namespace OrderProcessing { 

外部モジュールの場合は、外部モジュールを何かでラップしないので、単に「モジュール」として参照することを意味します。外部モジュール(またはそれが今知られているように、「モジュール」)

module.ts

​​

あなたは別のファイルからモジュールを使用することができます...

...だけで何かをエクスポートするファイルであります
import { go } from './module.js'; 

alert(go()); 

module.tsの内容は、グローバルスコープにはなりません。

namespaceまたはモジュールは推奨されていません。いずれかを使用できます(ただし、混用しないでください)。 TSLintはむしろモジュールを使いました。

+0

しかし、このルールを有効にしてグローバルな名前空間を汚染することを防ぐことはできないでしょうか? –

+0

@FlorianLeitgeb - あなたはまだグローバルスコープにゼロの項目を追加するモジュールを持っています。 – Fenton

+0

私が理解しているように、モジュールは名前空間に名前が変更され、廃止されました。 –

関連する問題