import 문법보다 컴파일·실행·타입의 모양을 먼저 맞춘다

TypeScript의 출력, Node.js 로더, 선언 파일이 서로 다른 export 모양을 가리키면 타입 검사를 통과하고도 런타임에서 깨진다.

1

컴파일 출력

module · moduleResolution dist에 require와 import 중 무엇이 남는지 정한다.

불일치: 예상과 다른 JavaScript가 생성된다.

2

Node 실행 규칙

package.json type · .cjs · .mjs 배포 파일을 CommonJS와 ESM 중 어느 쪽으로 읽을지 정한다.

불일치: 문법 오류나 undefined가 나타난다.

3

타입 선언 표면

types · @types · declare module 허용되는 default, named, namespace import를 설명한다.

불일치: 잘못된 타입 또는 any가 퍼진다.