[typescript] 타입스크립트의 네임스페이스(Namespace)와 모듈(Module)의 차이점
네임스페이스(Namespace)와 모듈(Module)은 타입스크립트에서 코드를 구성하고 구성 요소를 캡슐화하는 데 사용되는 두 가지 다른 개념입니다. 이들 간에는 몇 가지 중요한 차이점이 있습니다.
네임스페이스(Namespace)
네임스페이스는 전역 스코프에 코드를 담는 데 사용됩니다. 여러 파일에 걸쳐 있는 코드를 하나의 네임스페이스로 묶어서 전역 스코프의 오염을 방지할 수 있습니다. 네임스페이스를 사용하면 클래스, 인터페이스 및 함수 등을 그룹화하여 코드를 구조화할 수 있습니다.
아래는 네임스페이스의 기본적인 사용 예시입니다.
namespace MyNamespace {
export interface MyInterface {
//...
}
export function myFunction() {
//...
}
}
모듈(Module)
반면에 모듈은 외부 파일로 코드를 분리하는 데 사용됩니다. 모듈은 파일 간에 코드를 재사용하고 외부 의존성을 관리하는 데 도움이 됩니다. 또한 모듈은 네임스페이스와 달리 전역 스코프에 영향을 주지 않고 코드를 구성할 수 있습니다.
아래는 모듈의 기본적인 사용 예시입니다.
// MyModule.ts
export interface MyInterface {
//...
}
export function myFunction() {
//...
}
요약
- 네임스페이스는 코드를 전역 스코프에 담는 데 사용되며, 모듈은 외부 파일로 코드를 분리하는 데 사용됩니다.
- 모듈은 ES6의 모듈 시스템을 사용할 수 있지만, 네임스페이스는 해당 시스템을 지원하지 않습니다.
따라서 프로젝트의 규모 및 구조에 따라 네임스페이스와 모듈 중 적합한 것을 선택해야 합니다.
더 자세한 내용은 공식 타입스크립트 문서를 참고할 수 있습니다.