Espacio de Nombres en TypeScript

Espacio de Nombres

Descripción: Un espacio de nombres es un contenedor que permite agrupar variables, funciones, clases e interfaces bajo un nombre común para evitar colisiones de nombres en el ámbito global.

Sintaxis Básica

namespace MyNamespace {
  export class MyClass {
    // Código de la clase
  }

  export function myFunction() {
    // Código de la función
  }
}

Para acceder a los elementos definidos dentro de un espacio de nombres, se usa la notación de punto (.).

const instance = new MyNamespace.MyClass();
MyNamespace.myFunction();

Ejemplo Completo

namespace MathUtils {
  export function add(x: number, y: number): number {
    return x + y;
  }

  export function subtract(x: number, y: number): number {
    return x - y;
  }

  export class Calculator {
    multiply(x: number, y: number): number {
      return x * y;
    }

    divide(x: number, y: number): number {
      if (y === 0) {
        throw new Error("Division by zero");
      }
      return x / y;
    }
  }
}

// Usando el espacio de nombres MathUtils
const result1 = MathUtils.add(10, 5);
const result2 = MathUtils.subtract(10, 5);
const calculator = new MathUtils.Calculator();
const result3 = calculator.multiply(10, 5);
const result4 = calculator.divide(10, 5);

console.log(result1); // 15
console.log(result2); // 5
console.log(result3); // 50
console.log(result4); // 2

Explicación del Código

Definición del Espacio de Nombres:

namespace MathUtils {
  export function add(x: number, y: number): number {
    return x + y;
  }

  export function subtract(x: number, y: number): number {
    return x - y;
  }

  export class Calculator {
    multiply(x: number, y: number): number {
      return x * y;
    }

    divide(x: number, y: number): number {
      if (y === 0) {
        throw new Error("Division by zero");
      }
      return x / y;
    }
  }
}

Aquí se define un espacio de nombres llamado MathUtils que contiene dos funciones (add y subtract) y una clase (Calculator) con métodos (multiply y divide). Todos estos elementos están exportados para que puedan ser utilizados fuera del espacio de nombres.

Uso del Espacio de Nombres:

const result1 = MathUtils.add(10, 5);
const result2 = MathUtils.subtract(10, 5);
const calculator = new MathUtils.Calculator();
const result3 = calculator.multiply(10, 5);
const result4 = calculator.divide(10, 5);

Aquí se muestra cómo se accede a las funciones y la clase dentro del espacio de nombres MathUtils usando la notación de punto. Se crean variables para almacenar los resultados de las operaciones.

Impresión de Resultados:

console.log(result1); // 15
console.log(result2); // 5
console.log(result3); // 50
console.log(result4); // 2

Finalmente, se imprimen los resultados de las operaciones en la consola.