За замовчуванням, коли ви починаєте вводити код у новому файлі TypeScript, ваш код знаходиться в глобальному просторі імен. Як демонстрацію розглянемо файл foo.ts
:
var foo = 123;
Якщо ви тепер створите новий файл bar.ts
у тому самому проекті, вам буде дозволено системою типів TypeScript використовувати змінну foo
так, якби вона була доступна глобально:
var bar = foo; // allowed
Зайве говорити, що мати глобальний простір імен небезпечно, оскільки це відкриває ваш код для конфліктів імен. Ми рекомендуємо використовувати файлові модулі, які представлені далі.
Також називаються зовнішніми модулями. Якщо у вас є «імпорт» або «експорт» на кореневому рівні файлу TypeScript, тоді в цьому файлі створюється локальна область. Отже, якщо ми змінимо попередній foo.ts
на такий (зверніть увагу на використання export
):
export var foo = 123;
Ми більше не матимемо foo
у глобальному просторі імен. Це можна продемонструвати, створивши новий файл bar.ts
наступним чином:
var bar = foo; // ERROR: "cannot find name 'foo'"
Якщо ви хочете використовувати матеріали з foo.ts
у bar.ts
вам потрібно явно імпортувати це. Це показано в оновленому bar.ts
нижче:
import { foo } from "./foo";
var bar = foo; // allowed
Використання import
у bar.ts
не тільки дає змогу вводити матеріали з інших файлів, але також позначає файл bar.ts
як модуль, а отже, оголошення в bar.ts
не також не забруднювати глобальний простір імен.
Те, що JavaScript генерується з даного файлу TypeScript, який використовує зовнішні модулі, керується прапором компілятора під назвою module
.