모듈 경계

모듈 의존성 분류

import 문은 모두 비슷해 보이지만 런타임에 남는 값 의존성, 컴파일 때 사라지는 타입 의존성, 가져오는 순간 실행되는 효과가 서로 다릅니다.

value

런타임에 필요한 코드

import { add } from "./math";
add(1, 2);

함수, 클래스, 상수처럼 실행 중 참조되는 값은 번들에 남습니다.

type

타입 검사만 위한 연결

import type { User } from "./user";
const value: User = data;

타입 전용 import는 자바스크립트 출력에서 제거되어 실행 의존성을 늘리지 않습니다.

effect

가져오는 순간 실행

import "./polyfills";
startApp();

전역 설정, 폴리필, 스타일처럼 실행 순서가 의미 있는 파일에만 사용합니다.

순환 참조가 보일 때

공유 타입은 import type으로 낮추고, 실제 값 의존성은 한 방향으로 흐르게 정리합니다.

경로가 길어질 때

기능 경계를 기준으로 배럴 파일이나 paths 별칭을 쓰되, 공개 API가 흐려지지 않게 유지합니다.

검토 순서

이 import가 실행 결과에 필요한지, 타입 검사에만 필요한지, 부수 효과를 의도하는지 먼저 구분합니다.