[typescript] 네임스페이스와 모듈
이 문서에서는 TypeScript에서 네임스페이스와 모듈의 차이를 설명하고, 각각의 사용 사례에 대해 살펴보겠습니다.
네임스페이스 (Namespaces)
네임스페이스는 코드를 논리적인 그룹으로 구성하여 전역 네임스페이스의 오염을 방지하는 데 사용됩니다. 네임스페이스는 주로 클라이언트 쪽 JavaScript 코드를 구성할 때 사용됩니다.
예시
namespace Geometry {
export interface Shape {
area(): number;
}
export class Circle implements Shape {
constructor(private radius: number) {}
area() {
return Math.PI * Math.pow(this.radius, 2);
}
}
}
위의 코드에서 Geometry
는 하나의 네임스페이스로, Shape
인터페이스와 Circle
클래스를 포함하고 있습니다.
모듈 (Modules)
모듈은 코드를 논리적인 단위로 구성하기 위한 메커니즘으로, ES6 이후에 표준적으로 지원되고 있습니다. 모듈은 주로 서버 쪽 JavaScript나 클라이언트 쪽 번들러를 통한 코드 구성에 사용됩니다.
예시
// shapes.ts
export interface Shape {
area(): number;
}
export class Circle implements Shape {
constructor(private radius: number) {}
area() {
return Math.PI * Math.pow(this.radius, 2);
}
}
위의 코드는 Shape
인터페이스와 Circle
클래스를 shapes.ts
모듈로 정의하고 있습니다.
네임스페이스 vs 모듈
- 네임스페이스는 주로 클라이언트 쪽 코드에서 사용되며, 전역 네임스페이스의 오염을 방지하기 위한 용도로 사용됩니다.
- 모듈은 ES6 이후의 표준이며, 주로 서버 쪽 코드나 번들러를 통한 클라이언트 쪽 코드에서 사용됩니다.
따라서, 프로젝트에 따라 적절한 상황에서 네임스페이스와 모듈을 선택하여 사용해야 합니다.
이상으로 TypeScript에서의 네임스페이스와 모듈에 대한 간단한 설명을 마치겠습니다. 감사합니다.
참고자료: TypeScript 공식 문서