PassFront
  1. PassFront
  2. База знаний
  3. Основы TypeScript

Что такое пространства имен 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

Другие вопросы раздела