Перейти к содержанию

Модули

Глобальный модуль

По умолчанию, когда вы начинаете писать код в новом файле TypeScript, ваш код находится в глобальном пространстве имен. В качестве демонстрации рассмотрим файл foo.ts:

var foo = 123;

Если вы теперь создадите новый файл bar.ts в том же проекте, система типов TypeScript разрешит вам использовать переменную foo, как если бы она была доступна глобально:

var bar = foo; // разрешено

Нет необходимости говорить, что наличие глобального пространства имен опасно, поскольку оно открывает ваш код для конфликтов имен. Мы рекомендуем использовать файловые модули, которые представлены далее.

Файловые модули

Также называются внешние модули. Если у вас есть import или export в корне файла TypeScript, тогда он создает локальную область видимости внутри этого файла. Так что, если мы изменим предыдущий foo.ts на следующий (обратите внимание на использование export):

export var foo = 123;

У нас больше не будет foo в глобальной области видимости. Это можно продемонстрировать, создав новый файл bar.ts следующим образом:

var bar = foo; // ОШИБКА: "невозможно найти имя 'foo'"

Если вы хотите использовать данные из foo.ts в bar.ts вам нужно явно импортировать их. Это показано в обновленном bar.ts ниже:

import { foo } from './foo';
var bar = foo; // разрешено

Использование import в bar.ts не только позволяет использовать данные из других файлов, но также помечает файл bar.ts как module и, следовательно, объявления в bar.ts не загрязняют глобальное пространство имен.

Файлы TypeScript используют внешние модули тип которых в сгенерированном JavaScript управляется флагом module.