Stejně jako v názvu: nepodporuje strojopisem jmenné prostory? Pokud ano, jak mohu použít?
Podporuje strojopisem namespace?
Strojopisem umožňuje definovat modulů úzce souvisí s tím, co bude v ECMAScript 6. Následující příklad je převzat z spec:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Jak můžete vidět, moduly mají jména a mohou být vnořené. Používáte-li tečky v názvech modulů, bude strojopisem kompilace to vnořené moduly následujícím způsobem:
module A.B.C {
export var x = 1;
}
To se rovná
module A {
module B {
module C {
export var x = 1;
}
}
}
Co je také důležité, je, že pokud znovu použít stejný název modulu v jednom strojopisu programu, kód bude patřit do stejného modulu. Z tohoto důvodu, můžete použít vnořené moduly implementovat hierarchichal jmenných prostorů.
Jak verze 1.5, Typescript podporuje namespaceklíčové slovo. Jmenné prostory jsou rovnocenné vnitřních modulů.
Před:
module Math { export function add(x, y) { ... } }Po:
namespace Math { export function add(x, y) { ... } }
Pro vymezení vnitřní modul, nyní můžete použít oba modulea namespace.
Zde je příklad strojopisem namespace:
///<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();
}
}
}
Můžete se podívat na více zde: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Neexistuje žádná ‚namespace‘ klíčové slovo, ale interní moduly (tzv modul "klíčové slovo) a externích modulů (pomocí‚vývozem‘klíčové slovo) nabízejí podobný způsob, jak rozdělit svůj kód do logických hierarchií.
Nepravdivé...
module A.B.C {
export var x = 1;
}
je rovný
module A {
export module B {
export module C {
export var x = 1;
}
}
}
protože můžete psát mimo modulu A:
var y = A.B.C.x;
Ale :
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













