Comme dans le titre: Est-ce que les espaces de noms de soutien dactylographiée? Si oui, comment puis-je les utiliser?
Est-ce que l'espace de noms de support dactylographiée?
Tapuscrit permet de définir des modules étroitement liés à ce qui sera dans ECMAScript 6. L'exemple suivant est tiré de la spécification:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Comme vous pouvez le voir, les modules ont des noms et peuvent être imbriquées. Si vous utilisez des points dans les noms de modules, tapuscrit compilera ce aux modules imbriqués comme suit:
module A.B.C {
export var x = 1;
}
Ceci est égal à
module A {
module B {
module C {
export var x = 1;
}
}
}
Ce qui est aussi important que si vous réutilisez le même nom du module dans un programme dactylographiée, le code appartiendra au même module. Par conséquent, vous pouvez utiliser des modules imbriqués pour mettre en œuvre namespaces hierarchichal.
A partir de la version 1.5, prend en charge Tapuscrit namespacemot - clé. Les espaces de noms sont équivalents aux modules internes.
De Quoi de neuf dans Tapuscrit :
Avant:
module Math { export function add(x, y) { ... } }Après:
namespace Math { export function add(x, y) { ... } }
Pour définir un module interne, vous pouvez maintenant utiliser les deux moduleet namespace.
Voici un exemple d'espace de noms tapuscrit:
///<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();
}
}
}
Vous pouvez consulter plus ici: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Il n'y a pas de mot clé « namespace », mais les modules internes (en utilisant le mot-clé « module ») et des modules externes (en utilisant le mot-clé « export ») offrent une manière similaire à partitionner votre code dans des hiérarchies logiques.
Faux...
module A.B.C {
export var x = 1;
}
est égal à
module A {
export module B {
export module C {
export var x = 1;
}
}
}
parce que vous pouvez écrire à l'extérieur du module A:
var y = A.B.C.x;
Mais :
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













