[typescript] 외부 모듈과 내부 모듈의 차이점

TypeScript는 JavaScript의 상위 집합 언어로 모듈 시스템을 지원합니다. 모듈은 코드의 재사용성과 유지보수성을 향상시키는 데 도움이 됩니다. TypeScript에서는 외부 모듈과 내부 모듈을 모두 지원합니다. 각각의 모듈 유형에는 고유한 특징이 있습니다. 이번 게시물에서는 TypeScript에서 외부 모듈과 내부 모듈의 차이점에 대해 알아보겠습니다.

외부 모듈 (External Module)

외부 모듈은 파일 단위로 작성되며, 모듈 파일은 코드를 내보내기 위해 export 키워드를 사용합니다. 외부 모듈은 다른 모듈에서 import 문을 사용하여 가져올 수 있습니다. 외부 모듈은 주로 라이브러리와 같이 다른 프로젝트에서 재사용할 수 있는 코드를 구성하는 데 사용됩니다.

예시:

// 모듈 파일: mathFunctions.ts
export function add(a: number, b: number): number {
    return a + b;
}
// 모듈을 사용하는 파일
import { add } from './mathFunctions';
console.log(add(3, 5)); // 8

내부 모듈 (Internal Module or Namespace)

내부 모듈은 네임스페이스를 사용하여 모듈을 구성합니다. 이전 버전의 TypeScript에서 주로 사용되었으며, 현재의 TypeScript에서는 namespace 키워드가 나타내는 의미 때문에 추천되지 않는 방식입니다. 대신 외부 모듈을 사용하는 것이 권장되고 있습니다.

예시:

namespace MathFunctions {
    export function add(a: number, b: number): number {
        return a + b;
    }
}

내부 모듈과 외부 모듈의 가장 큰 차이점은 모듈의 사용 방식입니다. 내부 모듈은 import 대신 namespace 키워드를 사용하여 모듈을 가져와야 하며, 외부 모듈은 import 키워드를 사용하여 모듈을 가져옵니다.

결론

외부 모듈은 코드의 재사용성을 증가시키며, 타입이나 값 그룹을 내보내거나 가져올 때 더 나은 방법입니다. 따라서 새로운 TypeScript 프로젝트를 시작할 때는 내부 모듈 대신 외부 모듈을 사용하는 것이 권장됩니다.

외부 모듈과 내부 모듈 모두 장단점을 가지고 있지만, 현재의 TypeScript에서는 외부 모듈을 사용하는 것이 추천되고 있습니다.

참고 자료: