[typescript] 타입스크립트의 네임스페이스(Namespace)와 모듈(Module)의 차이점

네임스페이스(Namespace)와 모듈(Module)은 타입스크립트에서 코드를 구성하고 구성 요소를 캡슐화하는 데 사용되는 두 가지 다른 개념입니다. 이들 간에는 몇 가지 중요한 차이점이 있습니다.

네임스페이스(Namespace)

네임스페이스는 전역 스코프에 코드를 담는 데 사용됩니다. 여러 파일에 걸쳐 있는 코드를 하나의 네임스페이스로 묶어서 전역 스코프의 오염을 방지할 수 있습니다. 네임스페이스를 사용하면 클래스, 인터페이스 및 함수 등을 그룹화하여 코드를 구조화할 수 있습니다.

아래는 네임스페이스의 기본적인 사용 예시입니다.

namespace MyNamespace {
  export interface MyInterface {
    //...
  }

  export function myFunction() {
    //...
  }
}

모듈(Module)

반면에 모듈은 외부 파일로 코드를 분리하는 데 사용됩니다. 모듈은 파일 간에 코드를 재사용하고 외부 의존성을 관리하는 데 도움이 됩니다. 또한 모듈은 네임스페이스와 달리 전역 스코프에 영향을 주지 않고 코드를 구성할 수 있습니다.

아래는 모듈의 기본적인 사용 예시입니다.

// MyModule.ts
export interface MyInterface {
  //...
}

export function myFunction() {
  //...
}

요약

따라서 프로젝트의 규모 및 구조에 따라 네임스페이스모듈 중 적합한 것을 선택해야 합니다.

더 자세한 내용은 공식 타입스크립트 문서를 참고할 수 있습니다.