外部モジュールと名前空間
コード スニペットで示されているように、直感に反して、TypeScript 外部モジュールの名前空間は予期しない動作を引き起こします。これは、モジュールの構成と名前の衝突防止のための名前空間の誤った使用に根ざした誤解です。
理由を理解するには、次のキャンディーの例えを考えてください:
キャンディー カップの例え: 誤解
-
バージョン 1: 個人各キャンディーのカップ: 各モジュールには独自の名前空間があり、意味のある組織なしで効果的に分離されています。
-
バージョン 2: すべてのキャンディーに 1 つの共有カップ: このシナリオは、グローバルすべてのタイプをマージする名前空間。別個に動作するモジュールには適用されません。
モジュールの名前空間の拒否
-
組織: モジュールは本質的にファイル システム ベースの組織を提供し、名前空間を作成します。冗長です。
-
名前衝突: モジュールは、そのスコープ内で型名の衝突を防ぐため、この問題を解決します。
代替モジュール編成ガイドライン
-
最上位レベルに近いエクスポート: 単一のエクスポートにはエクスポートのデフォルトを使用し、複数のエクスポートを次の場所に配置します。最上位。
-
大規模なエクスポート セットにのみ名前空間モジュールを使用する: 多数のエンティティをエクスポートする場合にのみ、名前空間モジュールの使用を検討してください。
不適切なモジュールに対する危険信号構造
- 別のモジュール宣言のみを定義するモジュールをエクスポートします (エクスポートをトップレベルに移動します)。
- 単一エクスポートの場合は、エクスポート デフォルトを使用せずにエクスポート クラスまたはエクスポート関数を使用します。
- 同一のエクスポート モジュール宣言を持つ複数のファイル (マージされません)。
以上がTypeScript 外部モジュールで名前空間が予期せぬ動作をするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。