В TypeScript модули используются для организации кода и разделения его на отдельные файлы, что облегчает его повторное использование и поддержку. В TypeScript есть два типа модулей: внутренние и внешние модули.
**Внутренние модули
Внутренние модули, также называемые пространствами имен (namespaces), позволяют группировать связанный код в одном месте. Они могут содержать классы, интерфейсы, функции и другие объекты и могут быть вложенными. Внутренние модули описываются с помощью ключевого слова namespace
.
namespace MyNamespace {
export interface Person {
name: string;
age: number;
}
export function sayHello(person: Person) {
console.log(`Hello, my name is ${person.name} and I am ${person.age} years old.`);
}
}
const person: MyNamespace.Person = { name: 'John', age: 30 };
MyNamespace.sayHello(person); // Output: 'Hello, my name## Внешние модули (External Modules)
**Внешние модули
Внешние модули, также называемые модулями CommonJS или AMD, позволяют загружать код из отдельных файлов и использовать его в других проектах. Внешние модули могут импортировать и экспортировать объекты, функции, классы и другие элементы кода.
Внешний модуль определяется в отдельном файле, который может быть загружен с помощью инструментов сборки, таких как Webpack или Rollup. Для экспорта элементов из модуля используется ключевое слово export
, а для импорта элементов из других модулей используется ключевое слово import
.
Вот пример определения и использования внешнего модуля:
// myModule.ts
export interface Person {
name: string;
age: number;
}
export function sayHello(person: Person) {
console.log(`Hello, my name is ${person.name} and I am ${person.age} years old.`);
}
// app.ts
import { Person, sayHello } from './myModule';
constperson: Person = { name: 'John', age: 30 };
sayHello(person); // Output: 'Hello, my name is John and I am 30 years old.'
В этом примере мы определили внешний модуль myModule
, который экспортирует интерфейс Person
и функцию sayHello()
. Затем мы импортировали эти элементы в файл app.ts
, создали объект person
типа Person
и передали его в функцию sayHello()
.
**Различия между внутренними и внешними модулями
Основное различие между внутренними и внешними модулями заключается в том, что внутренние модули используются для организации кода в рамках одного проекта, а внешние модули используются для распространения кода между различными проектами и библиотеками.