"tsc 가 한 명령어 아냐 — 여러 blade 가진 스위스 아미 나이프."
가장 많이 쓸 mode
`tsc` — 전체 타입 체크 + emit. Default. 가장 느린 mode; .js 출력 만듦.
`tsc --noEmit` — 타입 체크만. .js 출력 필요 없는 (다른 tool 이 만드니까) CI '컴파일 돼?' 체크에 사용. Full compile 보다 빠름.
`tsc --watch` — 계속 돌고, 파일 변경에 재체크. 빠른 incremental feedback 위해 개발 동안 사용. --noEmit 와 결합하면 지속 타입 체크.
`tsc --incremental` — 타입-체크 state 를 `.tsbuildinfo` 에 cache. 후속 실행이 바뀐 거만 재체크. 큰 프로젝트에 필수.
`tsc -b` / `--build` — project reference build mode. Multi-package monorepo build 조정. 다음 lesson 에서 다룸.
실제 프로젝트가 어떻게 쓰나
전형적 setup: CI 의 타입-전용 체크엔 tsc --noEmit --incremental, 실제 JS emit 엔 vite 또는 esbuild, 개발 IDE/터미널의 지속 feedback 엔 tsc --watch --noEmit. 분리가 의도적 — fast transpiler 가 build 하게 하고; `tsc` 가 타입-체크에 집중하게.
Modern 프로젝트에 emit 용 `tsc` 안 써. Vite, esbuild, swc, Bun, Deno 다 JavaScript 만드는 데 10-100x 더 빠름. 그것들 하게 둬. `tsc` 는 타입-체크만, 동등한 게 없어서.