Ответ
Namespaces в JavaScript (или TypeScript) позволяют организовывать код в логические группы, предотвращая конфликты имен. Они особенно полезны в глобальной области видимости.
Пример с TypeScript:
namespace MyUtils {
export function log(message: string) {
console.log(message);
}
}
MyUtils.log("Hello"); // Работает
log("Hi"); // Ошибка: функция не найдена
Особенности:
- Инкапсулируют код, делая его доступным только внутри namespace
- Могут быть вложенными
- В современном JS/TS часто заменяются модулями (import/export)
- В TypeScript компилируются в IIFE (самовызывающиеся функции)