Что такое пространства имен TypeScript?
Основы TypeScript
Namespace (пространство имён) в TypeScript — способ сгруппировать код под одним именем, чтобы избежать конфликтов в глобальной области. Появился до ES-модулей.
namespace Geometry {
export function area(r: number) {
return Math.PI * r * r;
}
}
Geometry.area(2);Компилируется в объект и функцию-обёртку (IIFE).
Сейчас вместо namespace
В новом коде используют ES-модули (import / export): файл и так даёт отдельную область видимости, а бандлеры умеют удалять неиспользуемый код (tree-shaking), чего namespace не позволяет.
Где namespace ещё встречается
- файлы деклараций (
.d.ts) для библиотек, которые подключаются глобально через<script>; - расширение глобальных типов:
declare global { namespace NodeJS { interface ProcessEnv { … } } }; - старые проекты.
С флагом erasableSyntaxOnly (TS 5.8+, для запуска через type stripping в Node) обычные namespace с кодом запрещены.
Коротко для собеседования
Namespace группирует код под одним именем, но сейчас его заменяют ES-модулями; остаётся в .d.ts и для расширения глобальных типов.
Подробнее: TypeScript — Namespaces and Modules