---
sidebar_position: 9
---

# Namespaces

В TypeScript **namespace** (пространство имён) — это способ группировки логически связанных объектов, функций и интерфейсов. Они помогают избежать конфликтов имён в больших кодовых базах, инкапсулируя объявления внутри единого блока.

Основные особенности:
- Определяются с помощью ключевого слова `namespace`.
- Внутри можно объявлять переменные, функции, интерфейсы, классы и другие элементы.
- Для экспорта элементов используется `export`, иначе они остаются приватными.
- Для доступа к элементам снаружи используется `namespaceName.elementName`.


```ts
namespace MyNamespace {
    export class Person {
        constructor(public name: string) {}
        greet() {
            return `Hello, ${this.name}!`;
        }
    }
}

// Использование
const user = new MyNamespace.Person("Alice");
console.log(user.greet()); // Hello, Alice!
```

**Важно: В современных проектах вместо `namespace` чаще используют модули (ES6 modules), так как они поддерживаются нативно и лучше интегрируются с инструментами сборки.**

🚀 **_Источник: ChatGPT_**