[typescript] 타입스크립트에서 모듈과 네임스페이스의 주요 개념 이해

타입스크립트는 대규모 프로젝트에서 코드의 구조를 관리하기 위한 다양한 기능을 제공합니다. 모듈과 네임스페이스는 이러한 코드 구조화에 중요한 개념입니다. 이번 포스트에서는 타입스크립트에서 모듈과 네임스페이스의 주요 개념과 차이점에 대해 알아보겠습니다.

모듈(Module)이란?

모듈은 코드를 논리적으로 그룹화하여 재사용 가능한 단위로 만드는 것을 말합니다. 타입스크립트에서 모듈은 파일 수준의 범위를 가지며, 다른 모듈에서 export된 변수, 함수, 클래스 등을 가져와 사용할 수 있습니다.

예를 들어, 다음은 모듈을 사용하여 변수를 export하고 가져오는 예시입니다:

// math.ts
export const PI = 3.14;
export function square(x: number) {
  return x * x;
}

// app.ts
import { PI, square } from './math';
console.log(PI); // 3.14
console.log(square(2)); // 4

네임스페이스(Namespace)란?

네임스페이스는 전역 범위의 식별자를 하나의 이름 아래에 그룹화하는 방법입니다. 여러 파일에 걸쳐 사용되는 변수, 함수, 클래스를 하나의 네임스페이스로 묶어 관리할 수 있습니다.

다음은 네임스페이스를 사용하여 코드를 구조화하는 예시입니다:

// shapes.ts
namespace Shapes {
  export function areaOfCircle(radius: number) {
    return Math.PI * radius * radius;
  }
}

// app.ts
console.log(Shapes.areaOfCircle(2)); // 12.56

모듈 vs. 네임스페이스

모듈은 파일 수준에서 동작하며, 파일 간의 의존성을 관리하는 데 사용됩니다. 반면에, 네임스페이스는 전역 범위에서 동작하며, 전역 스코프를 오염시키지 않고 코드를 구조화하는 데 사용됩니다.

코드 구조화, 가시성, 캡슐화 등을 고려하여 모듈과 네임스페이스 중 적합한 것을 선택하여 사용할 수 있습니다.

타입스크립트에서 모듈과 네임스페이스의 사용법과 차이점을 이해하는 것은 코드의 구조를 효율적으로 관리하고 유지보수하기 쉽도록 도와줍니다.

이상으로 모듈과 네임스페이스에 대한 기본적인 이해를 공유해보았습니다. 다양한 코드 구조화 방법을 활용하여 프로젝트의 확장성 및 유지보수성을 향상시킬 수 있을 것입니다.