Jak w tytule: obsługuje maszynopis nazw? Jeśli tak, w jaki sposób z nich korzystać?
Czy nazw wsparcie maszynopis?
Maszynopis pozwala określić moduły ściśle związane, co będzie w ECMAScript 6. Poniższy przykład pochodzi z spec:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Jak widać, moduły mają nazwy i mogą być zagnieżdżone. Jeśli używasz kropek w nazwach modułów, maszynopis będzie skompilować ten modułów zagnieżdżonych w następujący sposób:
module A.B.C {
export var x = 1;
}
To jest równa
module A {
module B {
module C {
export var x = 1;
}
}
}
Co równie ważne jest to, że jeśli ponowne dokładnie taką samą nazwę modułu w jednym programie maszynopis, kod będzie należeć do tego samego modułu. Stąd też można korzystać z modułów zagnieżdżonych wdrożyć nazw hierarchichal.
Począwszy od wersji 1.5, maszynopis obsługuje namespacesłowa kluczowego. Nazw są równoważne moduły wewnętrzne.
Przed:
module Math { export function add(x, y) { ... } }Po:
namespace Math { export function add(x, y) { ... } }
Definiowania modułu wewnętrznego, teraz można używać zarówno modulei namespace.
Oto przykład nazw maszynopis:
///<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();
}
}
}
Możesz sprawdzić więcej tutaj: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Nie ma „namespace” słowo kluczowe, ale moduły wewnętrzne (za pomocą „moduł” słowo kluczowe) oraz zewnętrznych modułów (za pomocą słowa kluczowego „wywóz”) oferują podobny sposób Partycjonowanie kod w hierarchii logicznych.
Fałszywy...
module A.B.C {
export var x = 1;
}
jest równe
module A {
export module B {
export module C {
export var x = 1;
}
}
}
ponieważ można napisać poza modułem 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













