Работа с пространствами имен TypeScript

Пространства имен TypeScript предоставляют способ организации и управления кодом в рамках одной глобальной области. Пространства имен помогают группировать связанный код, предотвращая конфликты имен и улучшая удобство обслуживания кода. В этом руководстве рассматриваются основы создания и использования пространств имен TypeScript с примерами.

Что такое пространства имен TypeScript?

Пространства имен — это способ инкапсуляции кода в TypeScript. Они позволяют группировать связанные функции, классы и переменные в одну логическую единицу, что может быть полезно в больших проектах для избежания конфликтов имен и улучшения организации кода.

Создание пространства имен

Чтобы создать пространство имен, используйте ключевое слово namespace, за которым следует имя и блок кода. Внутри блока пространства имен определите функции, классы или переменные, которые должны быть частью этого пространства имен.

// mathUtils.ts

namespace MathUtils {
  export function add(a: number, b: number): number {
    return a + b;
  }

  export function subtract(a: number, b: number): number {
    return a - b;
  }
}

В этом примере пространство имен MathUtils содержит две функции: add и subtract, которые обе экспортируются для использования за пределами пространства имен.

Использование пространства имен

Чтобы использовать код внутри пространства имен, добавьте префикс имени пространства имен, за которым следует точка и имя члена. Убедитесь, что пространство имен доступно в области, где оно используется.

// app.ts

/// <reference path="mathUtils.ts" /> 

const sum = MathUtils.add(5, 3);
const difference = MathUtils.subtract(5, 3);

console.log(`Sum: ${sum}`);
console.log(`Difference: ${difference}`);

В этом примере пространство имен MathUtils указывается с помощью директивы с тройной косой чертой '<reference path="mathUtils.ts" />', что позволяет получить доступ к его функциям в файле app.ts.

Вложенные пространства имен

Пространства имен могут быть вложены в другие пространства имен, что помогает в дальнейшей организации кода. Доступ к вложенным пространствам имен осуществляется путем объединения имен пространств имен с точками.

// shapes.ts

namespace Shapes {
  export namespace Circle {
    export function area(radius: number): number {
      return Math.PI * radius * radius;
    }
  }

  export namespace Square {
    export function area(side: number): number {
      return side * side;
    }
  }
}

В этом примере пространство имен Shapes содержит два вложенных пространства имен: Circle и Square, каждое со своей собственной функцией area.

Использование вложенных пространств имен

Чтобы получить доступ к членам вложенных пространств имен, используйте точечную нотацию для объединения имен пространств имен.

// app.ts

/// <reference path="shapes.ts" /> 

const circleArea = Shapes.Circle.area(5);
const squareArea = Shapes.Square.area(4);

console.log(`Circle Area: ${circleArea}`);
console.log(`Square Area: ${squareArea}`);

В этом примере доступ к пространствам имен Circle и Square осуществляется через пространство имен Shapes, что демонстрирует, как можно использовать вложенные пространства имен.

Заключение

Пространства имен TypeScript — это мощный инструмент для организации и управления кодом. Используя пространства имен, код можно логически сгруппировать, что снижает риск конфликтов имен и улучшает удобство обслуживания. Понимание того, как создавать и использовать пространства имен, включая вложенные пространства имен, необходимо для эффективной разработки TypeScript.