tsconfig 핵심: target, lib, module

TypeScript (.ts)

lib: 타입 체크 시 뭘 알고 있나? (Promise, Map 등)

target: 문법을 얼마나 낮출 건가? (ES2020 → ?. 그대로, ES2019 → 삼항연산자로)

module: import/export를 뭘로? (CommonJS → require, ESNext → import)

JavaScript (.js)

target vs lib 분리 이유: 문법(syntax)과 API(runtime)는 다름

  • ?. → target이 변환 (문법)
  • Promise → 폴리필이 해결 (API)
{
  "target": "ES2019", // 하위호환 (optional chaining 이전)
  "module": "ESNext", // 트리쉐이킹 가능
  "lib": ["ES2020", "DOM"], // 타입은 넉넉하게
  "moduleResolution": "Node"
}

CAUTION

TS 버전 올리면서 target 그대로 두면 Webpack4 같은 구형 번들러에서 파싱 실패할 수 있음.

#501