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».
Вывод
Здесь появится то, что напечатает программа.