0Pricing
TypeScript Academy · Урок

Пространства имён и модули: современное применение

Разберитесь, почему модули предпочтительнее пространств имён

«Пространства имён и модули: современное применение» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

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

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

Пространство имён — это специфичный для TypeScript способ объединить связанный код в именованной области видимости с помощью ключевого слова `namespace`.
namespace Geometry {
  export interface Point { x: number; y: number; }
  export function distance(a: Point, b: Point): number {
    return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
  }
}

Доступ к членам пространства имён

Получайте доступ к членам пространства имён через его имя, используя точечную нотацию.
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5

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

Пространства имён могут быть вложенными.
namespace App {
  export namespace Models {
    export interface User { name: string; }
  }
}
const u: App.Models.User = { name: 'Alice' };

Слияние пространств имён

Пространства имён поддерживают слияние объявлений: два объявления пространства имён с одним именем объединяются.
namespace Validation {
  export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
  export function sanitize(s: string): string { return s.trim(); }
}

Почему предпочтительны модули

Модули ES являются стандартом JavaScript. Они поддерживаются всеми сборщиками, эффективно очищаются от неиспользуемого кода и нативно работают в современных браузерах и Node.js.

Модульный эквивалент пространства имён

В современном TypeScript пространство имён просто становится файлом. Экспортируйте то, что должно быть общедоступным, а остальное оставляйте закрытым.
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}

Пространства имён всё ещё используются в файлах объявлений

Пространства имён по-прежнему широко используются в файлах объявлений .d.ts для глобальных библиотек (например, типов DOM и типов Node.js), поскольку они расширяют глобальную область видимости.
// node.d.ts
declare namespace NodeJS {
  interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}

Ссылки с тройной косой чертой (устаревший подход)

До появления модулей ES директивы с тройной косой чертой задавали ссылки на другие файлы. Сегодня их заменяют включения в tsconfig и импорты модулей.
/// <reference types="node" />
/// <reference path="./other.d.ts" />

Когда всё ещё следует использовать пространства имён

Используйте пространства имён: (1) в файлах объявлений для глобальных типов, существующих только во время компиляции, (2) при расширении существующих глобальных пространств имён библиотек.

Переход от пространств имён к модулям

Замените `namespace Foo {}` файлом модуля. Замените `/// ` импортами. Команда TypeScript описала этот путь миграции.

Быстрая проверка

В современном TypeScript чем рекомендуется заменять пространства имён?

Итоги

Пространства имён организуют код в именованной области видимости, но в современном TypeScript считаются устаревшим подходом. Для кода приложений используйте модули ES (import/export). Пространства имён по-прежнему полезны в файлах объявлений для расширения глобальных типов.

Часто задаваемые вопросы

Урок «Пространства имён и модули: современное применение» бесплатный?

Да — полный текст урока «Пространства имён и модули: современное применение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Пространства имён и модули: современное применение»?

Разберитесь, почему модули предпочтительнее пространств имён Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

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

Сколько времени занимает урок «Пространства имён и модули: современное применение»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Синтаксис модулей ES: import и export
  2. Повторные экспорты и файлы-агрегаторы
  3. Импорты и экспорты только типов
  4. Пространства имён и модули: современное применение
← Назад к TypeScript Academy