TypeScriptУрок 14 из 16

Модули и namespace: как организовать код

В реальном проекте каждый файл — отдельный модуль: нужное другим вы экспортируете и импортируете там, где оно используется. Урок идёт в одном файле, поэтому модуль здесь изображает обычный объект.

Главное

  • Файл с import или export — модуль со своей областью видимости.
  • export function format() {...} в одном файле и import { format } from "./money" в другом.
  • import type подключает только типы, и после компиляции строка исчезает.
  • namespace появился до ES-модулей; он не объявлен устаревшим, но для нового кода TypeScript советует модули.
  • Запуск .ts напрямую в Node.js и флаг erasableSyntaxOnly не принимают namespace, как и enum.

Пример

// In a real project every file is a module:////   // money.ts//   export type Currency = "USD" | "EUR";//   export function format(amount: number, currency: Currency): string { ... }////   // main.ts//   import { format } from "./money";//   import type { Currency } from "./money"; // type-only, erased after compiling//// The lesson runs in one file, so a plain object plays the role of the module.type Currency = "USD" | "EUR"; const money = {  format(amount: number, currency: Currency): string {    return `${amount.toFixed(2)} ${currency}`;  },  add(a: number, b: number): number {    return Math.round((a + b) * 100) / 100;  },}; console.log(money.format(money.add(0.1, 0.2), "EUR"));

В комментарии показано, как money выглядел бы двумя файлами. Объект money собирает связанные функции под одним именем — так же, как это сделал бы модуль.

Задание

Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.

Перепишите namespace Temperature на обычный объект temperature, добавьте метод toCelsius и выведите четыре строки: «0C = 32F», «25C = 77F», «100C = 212F», «212F = 100C».

Вывод

Здесь появится то, что напечатает программа.