Como en el título: Does TypeScript admite espacios de nombres? Si es así, ¿cómo los uso?¿Admite TypeScript el espacio de nombres?
Respuesta
imprenta permite definir módulos estrechamente relacionado con lo que será en ECMAScript 6. El siguiente ejemplo está tomado de la especificación:
module outer {
var local = 1;
export var a = local;
export module inner {
export var x = 10;
}
}
Como se puede ver, los módulos tienen nombres y se pueden anidar. Si utiliza puntos en los nombres de módulos, mecanografiado compilará esto a módulos anidados de la siguiente manera:
module A.B.C {
export var x = 1;
}
Esto es igual a
module A {
module B {
module C {
export var x = 1;
}
}
}
Lo que también es importante es que si vuelve a utilizar exactamente el mismo nombre del módulo un programa mecanografiado, el código pertenecerá al mismo módulo. Por lo tanto, puede usar módulos anidados para implementar espacios de nombres jerárquicos.
No hay palabra clave 'namespace', pero los módulos internos (usando la palabra clave 'module') y los módulos externos (usando la palabra clave 'export') ofrecen una forma similar de dividir el código en jerarquías lógicas.
desde mecanografiado 1.5 existe tal palabra clave –
No recomendaría 'namespace' ni lo mezclaría con el código fuente' module'. – fletchsod
Aquí está un ejemplo mecanografiado espacio de nombres:
///<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();
}
}
}
Puede ver más aquí: http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/
Falso ...
module A.B.C {
export var x = 1;
}
es igual a
module A {
export module B {
export module C {
export var x = 1;
}
}
}
porque se puede escribir fuera del módulo A:
var y = A.B.C.x;
Pero:
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
partir de la versión 1.5, Letra de imprenta apoya namespace
palabra clave. Los espacios de nombres son equivalentes a los módulos internos.
Antes:
module Math { export function add(x, y) { ... } }
Después:
namespace Math { export function add(x, y) { ... } }
Para definir un módulo interno, ahora se puede utilizar tanto module
y namespace
.
Tanto 'module' como' namespace' transpilan al mismo código JavaScript. –
No recomendaría 'namespace' ni lo mezclaría con el código fuente' module'. – fletchsod
- 1. ¿Admite TypeScript TouchEvent?
- 2. Espacio de nombres de módulo de TypeScript en varios archivos
- 3. ¿Squeak admite espacios de nombres?
- 4. ¿HTML5 admite espacios de nombres?
- 5. Espacio de nombres en PHP CodeIgniter Framework
- 6. El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data', etc
- 7. DataContractSerializer - cambiar el espacio de nombres y deserializar el archivo vinculado al antiguo espacio de nombres
- 8. :: sin espacio de nombres
- 9. JavaScript Espacio de nombres
- 10. ¿Dónde está el espacio de nombres System.Runtime.Serialization.Json?
- 11. ¿Dónde está el espacio de nombres System.Windows.Forms.Integration?
- 12. cómo usar el espacio de nombres Yii
- 13. principal en el espacio de nombres
- 14. serialización xml - eliminar el espacio de nombres
- 15. espacio de nombres, argparse, y el uso
- 16. Manejando modelos de espacio de nombres (clases) en el espacio de nombres
- 17. espacio de nombres 'SharePoint' no existe en el espacio de nombres 'Microsoft'
- 18. Mejores prácticas: ¿usar espacio de nombres o volver a abrir el espacio de nombres?
- 19. problemas de espacio de nombres
- 20. Regla de espacio de nombres
- 21. Indefinido CLR espacio de nombres
- 22. C++ Espacio de nombres pregunta
- 23. Espacio de nombres para [DataContract]
- 24. Anónimo Espacio de nombres ambigüedad
- 25. UnmarshalException - Espacio de nombres ¿Cuestión?
- 26. Espacio de nombres anónimo anidado?
- 27. SelectSingleNode sin espacio de nombres
- 28. "plantillas" un espacio de nombres
- 29. El tipo o el nombre del espacio de nombres 'ServiceBus' no existe en el espacio de nombres 'Microsoft'
- 30. El tipo o el nombre del espacio de nombres 'Linq' no existe en el espacio de nombres 'Sistema'
Tenga en cuenta que estos módulos ahora se denominan espacios de nombres: https://github.com/Microsoft/TypeScript/issues/2159 – Alex
No recomendaría 'namespace' ni lo mezclaría con el código fuente' module'. – fletchsod