고급 TypeScript - 모듈과 네임스페이스: 네임스페이스의 사용
모듈과 네임스페이스: 네임스페이스의 사용
TypeScript에서 모듈과 네임스페이스는 코드의 구조화와 재사용성을 높이는 중요한 개념입니다. 이 두 가지는 서로 다른 방식으로 코드를 조직하고 관리할 수 있게 해줍니다.
1. 모듈 시스템
모듈은 독립적인 코드 블록으로, 특정 기능이나 객체를 캡슐화하여 외부와의 의존성을 줄여주는 역할을 합니다. TypeScript에서는 ES6 모듈 시스템을 기반으로 하며, import
와 export
키워드를 사용하여 다른 파일 간에 코드를 공유합니다.
예제:
// math.ts 파일
export function add(x: number, y: number): number {
return x + y;
}
export function subtract(x: number, y: number): number {
return x - y;
}
// app.ts 파일
import { add, subtract } from './math';
console.log(add(5, 3)); // 8
console.log(subtract(5, 3)); // 2
위 예제에서 math.ts
파일은 두 개의 함수를 정의하고 이를 export합니다. 그리고 app.ts
에서 이 함수들을 import하여 사용할 수 있습니다.
2. 네임스페이스의 사용
네임스페이스는 관련된 코드 조각들을 그룹화하는 방법입니다. 주로 전역 범위를 오염시키지 않고 여러 관련 기능을 묶어 사용하는 데 유용합니다. TypeScript에서는 namespace
키워드를 사용하여 정의할 수 있습니다.
예제:
namespace Geometry {
export class Circle {
constructor(public radius: number) {}
area(): number {
return Math.PI * this.radius ** 2;
}
}
export class Square {
constructor(public sideLength: number) {}
area(): number {
return this.sideLength ** 2;
}
}
}
// 사용 예시:
const circle = new Geometry.Circle(10);
console.log(circle.area()); // 원의 면적 출력
const square = new Geometry.Square(4);
console.log(square.area()); // 정사각형의 면적 출력
위 예제에서는 Geometry
라는 네임스페이스 안에 두 개의 클래스를 정의했습니다. 각 클래스는 해당 도형에 대한 면적을 계산하는 메서드를 가지고 있으며, 이를 통해 관련된 클래스를 함께 묶어 관리할 수 있습니다.
결론
모듈과 네임스페이스 모두 TypeScript에서 코드를 더 잘 조직하고 유지보수하기 위해 사용하는 방법입니다.
- 모듈은 독립적으로 작성된 코드 조각들이며,
- 네임스페이스는 관련된 기능들을 하나로 묶어서 관리하는 방법입니다.
이러한 구조화를 통해 개발자는 보다 깔끔하고 이해하기 쉬운 코드를 작성할 수 있으며 대규모 애플리케이션에서도 효과적으로 작업할 수 있습니다.