Som i tittelen: gjør Loggfila støtte navnerom? Hvis ja, hvordan bruker jeg dem?
Har Loggfila støtte namespace?
Maskinskrevet manuskript gjør det mulig å definere modulene nær tilknytning til det som vil være i ECMAScript 6. Det følgende eksempel er tatt fra spek:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Som du kan se, moduler har navn og kan nestes. Hvis du bruker prikker i modulnavn, vil Loggfila kompilere dette til nestede moduler som følger:
module A.B.C {
export var x = 1;
}
Dette er lik
module A {
module B {
module C {
export var x = 1;
}
}
}
Hva er også viktig er at hvis du bruke nøyaktig samme modulnavnet i en Loggfila program, vil koden tilhører samme modul. Derfor kan du bruke nestede moduler for å gjennomføre hierarchichal navnerom.
Som i versjon 1.5 støtter Loggfila namespacesøkeord. Navnerom er tilsvarende interne moduler.
Fra Hva er nytt i Loggfila :
Før:
module Math { export function add(x, y) { ... } }Etter:
namespace Math { export function add(x, y) { ... } }
For å definere en intern modul, nå kan du bruke både moduleog namespace.
Her er en Loggfila navne eksempel:
///<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();
}
}
}
Du kan sjekke ut mer her: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Det er ingen 'namespace' keyword, men interne moduler (ved hjelp av 'modul' søkeord) og eksterne moduler (ved hjelp av 'eksportere' søkeord) tilbyr en lignende måte å partisjonere koden din i logiske hierarkier.
Falsk...
module A.B.C {
export var x = 1;
}
er lik
module A {
export module B {
export module C {
export var x = 1;
}
}
}
fordi du kan skrive utenfor modul A:
var y = A.B.C.x;
Men :
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













