Wie im Titel: tut Typoskript Unterstützung Namespaces? Wenn ja, wie kann ich sie verwenden?
Ist Typoskript Unterstützung Namespace?
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.
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.
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/
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.
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













