Zoals in de titel: doet Typescript ondersteuning namespaces? Zo ja, hoe kan ik ze gebruiken?
Heeft Typescript ondersteuning namespace?
Typescript laat definiëren modules nauw verwant aan wat in ECMAScript 6. Het volgende voorbeeld is ontleend aan de specificatie:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Zoals u kunt zien, modules hebben namen en kunnen worden genest. Als je punten gebruiken in module namen, zal typoscript deze samen te stellen geneste modules als volgt:
module A.B.C {
export var x = 1;
}
Dit is gelijk aan
module A {
module B {
module C {
export var x = 1;
}
}
}
Wat ook belangrijk is, is dat als je exact dezelfde module naam in één typoscript programma opnieuw te gebruiken, wordt de code behoren tot dezelfde module. Daarom kunt u geneste modules gebruiken om hiërarchische naamruimten implementeren.
Vanaf versie 1.5, Typescript ondersteunt namespacetrefwoord. Namespaces gelijkwaardig zijn aan interne modules.
Vanaf Wat is nieuw in Typescript :
Voor:
module Math { export function add(x, y) { ... } }Na:
namespace Math { export function add(x, y) { ... } }
Voor het definiëren van een interne module, nu kunt u zowel gebruiken moduleen namespace.
Hier is een typoscript namespace voorbeeld:
///<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();
}
}
}
U kunt controleren hier meer informatie: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Er is geen 'namespace' keyword, maar interne modules (met behulp van de 'module' keyword) en externe modules (met behulp van de 'export' keyword) bieden een soortgelijke manier om uw code te verdelen in logische hiërarchieën.
Valse ...
module A.B.C {
export var x = 1;
}
is gelijk aan
module A {
export module B {
export module C {
export var x = 1;
}
}
}
omdat je buiten de module A kan schrijven:
var y = A.B.C.x;
Maar :
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













