Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Una colisión de nombres ocurre cuando dos o más componentes de código usan el mismo nombre para una variable, función o clase. Son comunes en proyectos grandes donde muchas personas trabajan en el mismo código base. Pueden dificultar determinar qué componente del código es responsable de los errores.

Al usar espacios de nombres, puede organizar y administrar su código para que los grupos de componentes relacionados estén bajo un identificador común. Esto mitigará el riesgo de conflictos de nombres.

Creación de un espacio de nombres

Puede crear espacios de nombres en TypeScript usando el espacio de nombres palabra clave. Sígalo con un identificador para nombrar el espacio de nombres y un bloque encerrado entre llaves. La sintaxis es similar a la que usaría para crear una clase en JavaScript.

Por ejemplo:

espacio de nombres Ejemplo {}

A continuación, puede declarar miembros del espacio de nombres (variables, funciones y clases) dentro del bloque de espacio de nombres:

instagram viewer

espacio de nombres Ejemplo {
exportarfunciónFoo(): vacío{
consola.registro("Esta es una función dentro del espacio de nombres Ejemplo");
}

exportarclase Bar {
propiedad: cadena;

constructor(propiedad: cadena) {
este.propiedad = propiedad;
}
}

exportarconstante baz = "Esta es una variable de espacio de nombres"
}

En el ejemplo anterior, Foo, Bar, y baz son miembros de la Ejemplo espacio de nombres De forma predeterminada, solo puede acceder a los miembros de un espacio de nombres dentro de ese mismo espacio de nombres. Utilizar el exportar palabra clave para hacer que cada miembro del espacio de nombres sea accesible fuera de él.

Puede acceder a todos los miembros disponibles públicamente de un espacio de nombres llamando al nombre del miembro del espacio de nombres usando la notación de puntos:

Ejemplo.foo(); // Esta es una función dentro del espacio de nombres Ejemplo

constante barra = nuevo Ejemplo. Bar("cadena");
consola.log (barra.propiedad); // cadena

consola.log (Ejemplo.baz); // Esta es una variable de espacio de nombres

Anidamiento de espacios de nombres

TypeScript le permite anidar espacios de nombres dentro de otros espacios de nombres para crear una estructura jerárquica para su código. Los espacios de nombres anidados pueden reducir aún más los riesgos de colisiones de nombres al agrupar los espacios de nombres relacionados bajo un identificador común.

Por ejemplo:

espacio de nombres Ejemplo {
exportarconstante propiedad_1 = "Foo";

exportarespacio de nombres Bar {
exportarconstante imprimirPie = función () {
consola.log (propiedad_1);
};
}

exportarespacio de nombres baz {
exportarclase Foo {
propiedad: cadena;

constructor(propiedad: cadena) {
este.propiedad = propiedad;
}
}
}
}

El bloque de código anterior proporciona un ejemplo de un espacio de nombres anidado. El Ejemplo espacio de nombres es el espacio de nombres de nivel superior, que contiene el Bar espacio de nombres y el baz espacio de nombres

Puede acceder a las propiedades en un espacio de nombres anidado mediante la notación de puntos que sigue la estructura jerárquica que creó.

Por ejemplo:

consola.log (Ejemplo.propiedad_1); // Foo
Ejemplo. Bar.printFoo() // Foo
constante foo = nuevo Ejemplo. Baz. Foo("ejemplo")

Este código de ejemplo accede a cada miembro del espacio de nombres a través del espacio de nombres principal. Acceder a una propiedad directamente, en lugar de a través de su espacio de nombres principal, generaría un error:

Ejemplo.printFoo()
// error TS2339: la propiedad 'printFoo' no existe en el tipo 'typeof Example'

Aunque los espacios de nombres anidados pueden ayudarlo a organizar su código, los espacios de nombres profundamente anidados pueden producir el efecto contrario. Los espacios de nombres profundamente anidados hacen que su código sea más difícil de leer y mantener.

Alias ​​de espacio de nombres

Un alias de espacio de nombres es un nombre abreviado que se le da a un miembro del espacio de nombres, lo que facilita su referencia.

Puede crear un alias de espacio de nombres utilizando el importar palabra clave seguida del nombre que desea asignar al alias. Luego, asigne el importar palabra clave y el nombre de alias a un miembro del espacio de nombres.

Por ejemplo:

espacio de nombres Auto {
exportarespacio de nombres tesla {
exportarclase ModeloX {
crear(): Cadena {
devolver`Modelo X creado`
}
}
}

exportarespacio de nombres toyota {
exportarclase Camry {}
}

exportarespacio de nombres vado {
exportarclase mustango {}
}
}

// Creando el alias
importar tesla = coche. tesla

constante modeloX = nuevo tesla ModeloX()
modeloX.crear() // Modelo X Creado

Este ejemplo crea un alias para el Auto. tesla espacio de nombres Puede utilizar este alias para acceder a las propiedades del tesla espacio de nombres, como la clase ModelX, más fácilmente.

Uso de espacios de nombres en varios archivos

Para usar un espacio de nombres en un archivo diferente, debe importarlo. Importar espacios de nombres es diferente de importar variables, funciones, clases, etc. Dependiendo de su proyecto sistema de módulos, puede importarlos usando el requerir o el importar palabra clave.

Sin embargo, solo puede importar espacios de nombres utilizando la directiva de triple barra, que es un comentario de una sola línea que contiene una etiqueta XML.

Por ejemplo:

// principal.ts

///
Ejemplo.foo()

Este ejemplo usa la directiva de barra triple dentro de un principal.ts archivo. La directiva hace referencia a la índice.ts archivo, que contiene el Ejemplo espacio de nombres Sin importar, el espacio de nombres solo está disponible dentro del mismo archivo que lo define.

Después de hacer referencia a la índice.ts archivo, puede acceder al Ejemplo espacio de nombres y sus miembros disponibles públicamente. Por ejemplo, puede llamar al Foo método en el Ejemplo espacio de nombres

Una vez que use varios archivos, deberá asegurarse de que TypeScript compile y cargue todo el código necesario. Puede hacerlo concatenando la salida del compilador de TypeScript usando el desarchivar opción. Esto luego compilará todos los archivos de entrada en un solo archivo de salida de JavaScript. La sintaxis general para ejecutar el compilador de esta manera es:

tsc --outFile 

Reemplazar con el nombre de su archivo JavaScript de destino. Reemplazar con el nombre del archivo TypeScript que contiene la directiva de triple barra.

Por ejemplo:

tsc --outFile index.js principal.ts

Este comando compilará el contenido del principal.ts junto con todos los archivos a los que hace referencia la directiva de triple barra, en el índice.js archivo.

Alternativamente, puede especificar cada archivo individualmente:

tsc --outFile 

Es importante tener en cuenta que la directiva de barra triple solo es válida cuando se declara en la parte superior de un archivo. Si intenta usarlo en cualquier otro lugar, TypeScript lo tratará como un comentario regular de una sola línea sin un significado especial.

¿Debe utilizar espacios de nombres o módulos?

Si bien los espacios de nombres no están en desuso, a menudo se recomienda organizar y administrar su código usando módulos ES6. Los módulos son más fáciles de mantener y administrar y puede abarcarlos en varios archivos.

Además, puede especificar las relaciones entre módulos en términos de importaciones y exportaciones a nivel de archivo. Los espacios de nombres no pueden definir sus dependencias.

En última instancia, la elección entre espacios de nombres y módulos dependerá de las necesidades y los requisitos específicos de su proyecto, ya que ambos ofrecen una forma valiosa de organizar y administrar el código en TypeScript.