[typescript] 타입스크립트 모듈과 네임스페이스의 특징

타입스크립트에서 모듈과 네임스페이스는 코드를 정리하고 구조화하는 데 사용됩니다. 이 둘은 비슷해 보이지만, 각각의 특징과 차이점이 있습니다. 이번 글에서는 타입스크립트 모듈과 네임스페이스의 특징과 차이점에 대해 알아보겠습니다.

모듈(Module)

모듈은 파일 수준의 범위를 가지며, exportimport 키워드를 사용하여 외부와의 상호작용을 수행합니다. 다른 파일에서도 해당 모듈을 import하여 사용할 수 있으며, 명시적으로 외부에 노출시킬 요소를 선택할 수 있습니다. 이를 통해 코드를 캡슐화하고 재사용성을 높일 수 있습니다.

예를 들어, 다음은 exportimport 키워드를 사용하여 모듈을 정의하고 사용하는 예제입니다.

// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

// app.ts
import { add } from './math';
console.log(add(3, 5)); // 출력: 8

네임스페이스(Namespace)

네임스페이스는 전역 범위를 가지며, namespace 키워드를 사용하여 모듈화된 코드를 정의합니다. 일반적으로 네임스페이스는 복잡한 프로젝트에서 코드를 그룹화하고 충돌을 방지하기 위해 사용됩니다.

아래는 네임스페이스를 사용하여 코드를 구조화하는 예제입니다.

// math.ts
namespace Math {
  export function add(a: number, b: number): number {
    return a + b;
  }
}

// app.ts
console.log(Math.add(3, 5)); // 출력: 8

모듈과 네임스페이스의 차이점

주요 차이점은 다음과 같습니다:

따라서, 코드를 모듈화하고 재사용성을 높일 때는 모듈을, 전역 범위를 그룹화하고 충돌을 방지하고자 할 때는 네임스페이스를 사용하는 것이 바람직합니다.

이상으로, 타입스크립트 모듈과 네임스페이스의 특징과 차이점에 대해 알아보았습니다. 함께 읽어주셔서 감사합니다.