tsconfig module

module 옵션과 CommonJS

TypeScript의 module 옵션은 import/export 문법을 어떤 JavaScript 모듈 형식으로 내보낼지 결정합니다.

module 옵션

출력 모듈 형식 결정

tsconfig에서 변환 결과가 require인지 import 유지인지 정합니다.

"module": "CommonJS"
CommonJS

Node 전통 방식

import/export가 require와 exports 형태로 변환되어 Node 실행에 맞춰집니다.

const fs = require("fs")
ESNext

번들러 친화

Vite나 Webpack 같은 도구가 이후 변환을 맡도록 최신 모듈 문법을 유지합니다.

"module": "ESNext"
@types

패키지 타입 점검

JavaScript 패키지의 타입 정보를 @types 패키지로 가져와 자동완성과 검사를 받습니다.

@types/node
package 설정 package.json의 type 값과 tsconfig module 조합을 함께 확인합니다.
실행 도구 ts-node, tsx, 번들러가 기대하는 모듈 형식을 맞춥니다.
타입 패키지 Node 내장 모듈이나 CJS 패키지 타입이 없으면 @types 설치를 검토합니다.

module 옵션은 문법 취향이 아니라 출력된 JavaScript를 누가 어떤 방식으로 실행할지에 맞춘 선택입니다.