[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 모듈

따라서, 프로젝트에 따라 적절한 상황에서 네임스페이스와 모듈을 선택하여 사용해야 합니다.

이상으로 TypeScript에서의 네임스페이스와 모듈에 대한 간단한 설명을 마치겠습니다. 감사합니다.

참고자료: TypeScript 공식 문서