TypeScript에서는 네임스페이스와 모듈이라는 두 가지 방법을 사용하여 코드를 구성하고 관리할 수 있습니다. 이 두 가지 개념은 비슷해 보일 수 있지만, 실제로는 다른 목적과 사용 사례가 있습니다. 다음은 네임스페이스와 모듈의 주요 차이점에 대한 설명입니다.
네임스페이스
네임스페이스는 코드를 전역 스코프에서 논리적으로 그룹화하는 데 사용됩니다. 이것은 일종의 이름 공간으로, 변수, 함수, 클래스 등을 하나의 네임스페이스에 묶어서 중복을 방지하고 구조화된 코드를 작성할 수 있게 해줍니다.
다음은 간단한 네임스페이스의 예제입니다.
namespace MyNamespace {
export interface MyInterface {
// ...
}
export function myFunction() {
// ...
}
export class MyClass {
// ...
}
}
위의 예제에서 MyNamespace
는 네임스페이스를 나타내며 여러 인터페이스, 함수, 클래스 등을 포함할 수 있습니다.
모듈
반면에, 모듈은 코드를 별도의 파일로 분리하여 관리하는 데 사용됩니다. 이를 통해 코드를 논리적으로 그룹화하고 재사용성을 늘릴 수 있습니다. 모듈화된 코드는 다른 파일에서 import
문을 사용하여 불러올 수 있습니다.
다음은 간단한 모듈의 예제입니다.
// MyModule.ts
export interface MyInterface {
// ...
}
export function myFunction() {
// ...
}
export class MyClass {
// ...
}
다른 파일에서 MyModule
을 사용하는 예제는 다음과 같습니다.
import { MyInterface, myFunction, MyClass } from './MyModule';
// ...
결론
네임스페이스와 모듈은 코드를 구조화하고 관리하는 데 사용되지만, 네임스페이스는 주로 전역 스코프에서의 그룹화에, 모듈은 파일 단위로의 코드 재사용에 주로 사용됩니다. 이러한 차이를 이해하고 적절히 활용함으로써 TypeScript 프로젝트의 구조를 효율적으로 관리할 수 있습니다.
참고 자료: TypeScript Handbook - Namespaces, TypeScript Handbook - Modules