Ist Typoskript Unterstützung Namespace?

stimmen
52

Wie im Titel: tut Typoskript Unterstützung Namespaces? Wenn ja, wie kann ich sie verwenden?

Veröffentlicht am 05/10/2012 um 01:33
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
55

Typoskript erlaubt zu definieren Module eng miteinander verbunden, was in ECMAScript seine 6. Das folgende Beispiel aus der Spezifikation genommen wird:

module outer {
    var local = 1;
    export var a = local;
    export module inner {
        export var x = 10;
    }
}

Wie Sie sehen können, haben Module Namen und verschachtelt werden können. Wenn Sie Punkte in Modulnamen verwenden, werden Typoskript dies verschachtelte Module kompilieren wie folgt:

module A.B.C {
    export var x = 1;
}

Dies entspricht

module A {
    module B {
        module C {
            export var x = 1;
        }
    }
}

Was auch wichtig ist, dass, wenn Sie genau die gleichen Modulnamen in einem Typoskript Programm wieder verwenden, wird der Code auf den gleichen Modul gehört. Daher können Sie verschachtelte Module verwenden, um hierarchischen Namensraum zu implementieren.

Beantwortet am 05/10/2012 um 09:12
quelle vom benutzer

stimmen
28

Ab Version 1.5 unterstützt Typoskript namespaceSchlüsselwort. Namensräume sind äquivalent zu internen Modulen.

Von Was in Typoskript ist neu :

Vor:

module Math {
    export function add(x, y) { ... }
}

Nach:

namespace Math {
    export function add(x, y) { ... }
}

Für ein internes Modul definieren, jetzt können Sie verwenden beide moduleund namespace.

Beantwortet am 24/07/2015 um 18:01
quelle vom benutzer

stimmen
9

Hier ist ein Typoskript Namespace Beispiel:

///<reference path='AnotherNamespace/ClassOne.ts'/>
///<reference path='AnotherNamespace/ClassTwo.ts'/>

module MyNamespace
{
    import ClassOne = AnotherNamespace.ClassOne;
    import ClassTwo = AnotherNamespace.ClassTwo;

    export class Main
    {
        private _classOne:ClassOne;
        private _classTwo:ClassTwo;

        constructor()
        {
            this._classOne = new ClassOne();
            this._classTwo = new ClassTwo();
        }
    }
}

Sie können mehr hier ansehen: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

Beantwortet am 03/11/2013 um 22:54
quelle vom benutzer

stimmen
7

Es gibt kein ‚Namespace‘ Schlüsselwort, aber interne Module (mit dem ‚Modul‘ Schlüsselwort) und externe Module (mit dem ‚Export‘ Schlüsselwort) bietet eine ähnliche Art und Weise Ihren Code in logische Hierarchien zu partitionieren.

Beantwortet am 05/10/2012 um 01:35
quelle vom benutzer

stimmen
3

Falsch...

module A.B.C {
    export var x = 1;
}

entspricht

module A {
    export module B {
        export module C {
            export var x = 1;
        }
    }
}

da kann man außerhalb des Moduls A schreiben:

var y = A.B.C.x;

Aber :

module A {
    module B {
        module C {
            export var x = 1;
        }
        var y = C.x; // OK
    }
    //var y = B.C.x; // Invalid
}
//var y = A.B.C.x;   // Invalid
Beantwortet am 21/07/2015 um 11:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more