0

javascript で TypeScript モジュールにアクセスするときは、完全な命名を行う必要があるようです。これは正しいです?

私のTypeScriptは次のとおりです。

export module App.editor.menu {

    export class File {
        static isOpenEnabled() {
            return false;
        }

        static openClicked() {
            debugger;
        }
    }
}

そして私のJavaScriptは:

Ext.onReady(function () {

    define(["../../scripts/ribbon", "./menu-handler"], function (ribbon, handler) {

そして、「handler.isOpenEnabled()」の代わりに「handler.App.editor.menu.File.isOpenEnabled()」を呼び出す必要があります。

私が見たすべての例では、名前空間を含める必要はありません。しかし、半分が TypeScript、半分が JavaScript である例を見たことがないので、これは異なる可能性があると思います。

この場合、完全な名前空間が必要ですか?

4

1 に答える 1

1

名前空間の考え方は、名前の競合を避け、特定の型または変数のドメインを明確に指定することです。これは、必要なすべての型の推移閉包が 1 つのドメインに読み込まれ、名前の衝突が非常に問題となる .NET などで重要です。

外部モジュールでは、ロードするコードがバインド先の識別子を正確に定義し、呼び出し元は明示的にインポートしたコードのみを「見る」ため、これはまったく不要です。

一般に、最上位要素export module. export発信者がより簡単に見つけられるように、すべてを外に移動して装着します。特定の例では、ファイルには次のように記載する必要があります。

export class File { ... }

モジュール内にいなくても (1 つの外部モジュールを介して公開したい他のサブディビジョンがたくさんある場合を除きますが、これはありそうもないことです)。

于 2013-11-08T22:28:42.723 に答える