У стандарті ECMAscrip{filtering}t 2015 Javascrip{filtering}t додає поняття модулів. Typescrip{filter}t також дотримується цієї концепції.
1. Імпорт і експорт модулів
Модулі виконуються у власному діапазоні, а не в глобальному масштабі; Це означає, що змінні, функції, класи тощо, визначені в модулі, не видно поза модулем, якщо ви не експортуєте їх явно за допомогою одного з експортів. З іншого боку, якщо ви хочете використовувати змінні, функції, класи, інтерфейси тощо, експортовані з інших модулів, потрібно імпортувати їх, використавши один із імпортів.
Модулі самодекларуються. У Typescrip{filter}t зв'язок між двома модулями встановлюється шляхом імпорту та експорту на рівні файлу. Ось базовий приклад:
animal.ts
app.ts
У наведеному вище прикладі Animal-like оголошується в animal.ts і експортується через експорт. У app.ts вкажіть відносний шлях до файлу і імпортуйте його через імпорт для використання класу Animal.
Оскільки Javascrip{filter}t має два різні методи посилання на модулі, при компіляції в Javascrip{filter}t можна вказати метод посилання на скомпільований модуль через конфігураційний файл Typescrip{filtering}t tsconfig.json
Нижче наведено вміст файлу Javascrip{filter}t, скомпільований різними способами
commonjs
AMD
2. Перейменування імпорту та експорту
Назва внутрішнього об'єкта, який використовується за замовчуванням при імпорті та експорті модулів. Typescrip{filter}t також підтримує перейменування до та після експорту. Змініть наведений вище приклад
animal.ts
app.ts
Під час імпорту та експорту модулі перейменовуються за ключовим словом as.
Варто зазначити, що при перейменуванні експортованого модуля ім'я перед імпортом має збігатися з ім'ям експортованого перейменованого модуля, інакше компілятор видасть повідомлення про помилку. Наприклад, якщо експортований модуль перейменовано на ANI, ім'я модуля перед ключовим словом as має бути ANI при імпорті цього модуля в іншому файлі app.ts.
Альтернативно, якщо ви не знаєте назву імпортованого модуля, можна замінити його на знак *
У наведеному вище прикладі, якщо ви перейменуєте всі модулі, замінені знаком *, на animal_module, ви зможете отримати доступ до всього контенту, експортованого з модуля через animal_module об'єкт.
3. Експорт і експорт кількох об'єктів
Зазвичай у модулі визначаються кілька типів об'єктів, які потім експортуються разом. У імпорті також може бути кілька модулів
animal.ts
app.ts
Під час експорту ви можете зібрати об'єкт типу, який хочете експортувати, у JSON-об'єкт, а потім експортувати його. Після імпорту до вмісту можна отримати доступ через перейменовані об'єкти модуля.
4. Експорт за замовчуванням
Для модуля може бути лише один експорт за замовчуванням
animal.ts
app.ts
У наведеному вище прикладі клас Animal експортується за ключовим словом за замовчуванням. На відміну від звичайних імпортів, при імпорті стандартних експортних модулів можна безпосередньо вказати ім'я імпортованого модуля, не обмежуючи його у завиті дужки {}.
5. Модуль динамічного навантаження
Оскільки в Javascrip{filter}t є два способи завантаження модулів: CommonJS і AMD. При використанні Typescrip{filter}t потрібно писати різний код залежно від вмісту конфігурації фінальної компіляції для генерації Javascrip{filter}t.
Файл модуля animal.ts
Орієнтація на CommonJS:
app.ts
Цитата AMD way:
app.ts
|