Come nel titolo: fa namespace supporto tipografico? Se sì, come li uso?supportati da dattiloscritto dello spazio dei nomi?
risposta
tipografico permette di definire moduli strettamente legato a quello che sarà in ECMAScript 6. L'esempio che segue è tratto dal spec:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Come si può vedere, i moduli hanno nomi e possono essere nidificate. Se si utilizzano i punti di nomi di modulo, dattiloscritto si compilare questo per moduli annidati nel seguente modo:
module A.B.C {
export var x = 1;
}
Questo è pari a
module A {
module B {
module C {
export var x = 1;
}
}
}
Qual è anche importante è che se si riutilizza lo stesso identico nome del modulo un programma dattiloscritto, il codice apparterrà allo stesso modulo. Quindi, è possibile utilizzare i moduli annidati per implementare gli spazi dei nomi hierarchichal.
Non esiste una parola chiave 'namespace', ma i moduli interni (utilizzando la parola chiave 'module') ei moduli esterni (utilizzando la parola chiave 'export') offrono un modo simile per suddividere il codice in gerarchie logiche.
dal dattiloscritto 1.5 v'è una tale parola chiave –
Non avrei consigliato 'namespace' né mescolandolo con' codice sorgente module'. – fletchsod
Ecco un esempio dattiloscritto 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();
}
}
}
È possibile controllare più qui: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
False ...
module A.B.C {
export var x = 1;
}
è pari a
module A {
export module B {
export module C {
export var x = 1;
}
}
}
perché si può scrivere al di fuori del modulo A:
var y = A.B.C.x;
Ma:
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
A partire dalla versione 1.5, supporta tipografico namespace
parola chiave. I namespace sono equivalenti ai moduli interni.
Prima:
module Math { export function add(x, y) { ... } }
Dopo:
namespace Math { export function add(x, y) { ... } }
Per la definizione di un modulo interno, ora è possibile utilizzare sia module
e namespace
.
Sia 'module' che' namespace' traspongono allo stesso codice JavaScript. –
Non consiglierei 'namespace' né mescolarlo con il codice sorgente' module'. – fletchsod
- 1. - Modifica dello spazio dei nomi
- 2. Impostazione dello spazio dei nomi durante un'analisi
- 3. Capire la documentazione dello spazio dei nomi
- 4. Utilizzo dello spazio dei nomi System.ComponentModel
- 5. espressione xpath da xml con prefisso dello spazio dei nomi
- 6. Da dove deriva la nomenclatura dello spazio dei nomi "core"?
- 7. Il nome dello spazio dei nomi 'Transactions' non esiste nello spazio dei nomi 'System'
- 8. Utilizzo dello spazio dei nomi su più file in TypeScript
- 9. Il nome dello spazio dei nomi 'Oggetti' non esiste nello spazio dei nomi 'System.Data'
- 10. Il tipo o il nome dello spazio dei nomi 'DirectoryServices' non esiste nello spazio dei nomi?
- 11. Ottenere elementi con spazio dei nomi predefinito (nessun prefisso dello spazio dei nomi) utilizzando XPath
- 12. Il nome dello spazio dei nomi 'TeamFoundation' non esiste nello spazio dei nomi 'Microsoft'
- 13. Spazio dei nomi XSD nello spazio dei nomi C#
- 14. Corrispondenza spazio dei nomi
- 15. WPF: aggiunta globale della dichiarazione dello spazio dei nomi xaml
- 16. C++ getline() non richiede la dichiarazione dello spazio dei nomi
- 17. Impossibile trovare il nome dello spazio dei nomi 'dinamico'
- 18. Funzioni spazio dei nomi C++
- 19. Inserire gli usi all'interno o all'esterno dello spazio dei nomi?
- 20. Definire() Costanti all'interno del chiarimento dello spazio dei nomi
- 21. Nome qualificato nella dichiarazione dello spazio dei nomi
- 22. Spazio dei nomi per [DataContract]
- 23. C++ regole di utilizzo dello spazio dei nomi e denominazione
- 24. immagine dello spazio dei nomi e modificare il login
- 25. PHP DOM XML - Crea più attributi dello spazio dei nomi?
- 26. autoload_paths non è a conoscenza dello spazio dei nomi?
- 27. come risolvere Rails modello dello spazio dei nomi di collisione
- 28. Spazio dei nomi ASP.NET
- 29. manca il prefisso dello spazio dei nomi di Android
- 30. Avere doxygen consapevole dello spazio dei nomi in cpp
Si noti che questi moduli sono ora indicati come spazi dei nomi: https://github.com/Microsoft/TypeScript/issues/2159 – Alex
Non avrei consigliato 'namespace' né mescolandolo con' codice sorgente module'. – fletchsod