TypeScript 外部モジュールで名前空間を効果的に使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-10 13:39:02
オリジナル
375 人が閲覧しました

How Do I Use Namespaces Effectively with TypeScript External Modules?

TypeScript 外部モジュールで名前空間を使用するにはどうすればよいですか?

問題:

TypeScript 外部モジュールで名前空間を使用するコードがあります。モジュールを削除しましたが、エラーまたは予期しない動作が発生しました。コードは次のとおりです:

// baseTypes.ts
export namespace Living.Things {
  export class Animal {
    move() { /* ... */ }
  }
  export class Plant {
    photosynthesize() { /* ... */ }
  }
}

// dog.ts
import b = require('./baseTypes');

export namespace Living.Things {
  // Error, can't find name 'Animal', ??
  export class Dog extends Animal {
    woof() { }
  }
}

// tree.ts
// Error, can't use the same name twice, ??
import b = require('./baseTypes');
import b = require('./dogs');

namespace Living.Things {
  // Why do I have to write b.Living.Things.Plant instead of b.Plant??
  class Tree extends b.Living.Things.Plant {
  }
}
ログイン後にコピー

キャンディーカップの類似:

紙の上にキャンディーを整理することを想像してください。各シートが個別のモジュールである場合、各シートに「A」というラベルの付いたカップを作成することは役に立ちません。実際にキャンディーを整理せずに追加の手順を作成するようなものです。

カップレス化:

名前空間を使用する代わりに、次のようにコードを記述することを検討してください。

// Mod1.ts
export class Twix { ... }

// Mod2.ts
export class PeanutButterCup { ... }

// Mod3.ts
export class KitKat { ... }
ログイン後にコピー

これにより、不要な名前空間を必要とせずに、より単純な構造が作成されます。

名前空間が使用されない理由モジュールに最適:

  • 組織: ファイルシステムの組織は、このニーズに対応します。
  • 名前の競合: この問題は解決されません。オブジェクトには一意の名前があるため、モジュール内では発生しません。

外部モジュールのガイダンス:

  • できるだけトップレベルに近い状態でエクスポートします。
  • 単一のエクスポートにはエクスポートのデフォルトを使用します。
  • 複数のエクスポートをトップレベルに配置します。
  • 大規模なエクスポートにはモジュール/名前空間のみを使用します。

危険信号:

  • トップレベルのエクスポート モジュール Foo { ... }.
  • エクスポートのデフォルトではない単一のエクスポート クラス/関数。
  • 同じエクスポート モジュール Foo { ... }.
を持つ複数のファイル

以上がTypeScript 外部モジュールで名前空間を効果的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート