"Bun 이 너의 `.ts` 파일 실행. Deno 도. Compile step 없음. tsc 없음."
뭔지
Bun (bun.sh) — JavaScriptCore 위에 빌드된 JavaScript runtime. 많은 use case 엔 Node 의 drop-in 대체, 내장 TypeScript 지원, 빠른 startup, 포괄 standard library. bun run script.ts 가 그냥 작동.
Deno (deno.com) — V8 위에 빌드된 JavaScript/TypeScript runtime. Security-first (명시 permission 모델), TS-native, 내장 linter/formatter/test runner. deno run script.ts 가 그냥 작동.
둘 다 `.ts → .js` compile step 제거. Runtime 이 import 시 내부적으로 transpilation 처리; `.ts` 파일 직접 ship. Tooling 감소가 script, CLI, 작은 service 엔 significant.
타입 체크 여전히 중요
Bun 과 Deno 둘 다 default 로 transpile-하지만-타입체크-안 함 — 타입 떼고 JavaScript 돌림. 타입 체크 돌리려면 여전히 `tsc --noEmit` (또는 Deno 에서 `deno check`) 원해. 성능 trade-off: runtime 에 빠르게 transpile, 필요할 때 별도로 타입-체크.
어느 거 쓸 때
Bun — 속도와 단순성 원하는 Node-호환 프로젝트엔. Npm 패키지 작동, standard library 풍부, dev 경험 통합 (test runner, bundler, package manager 다 내장).
Deno — security 모델 가치 둘 때 (명시 `--allow-net`, `--allow-read` 등), Web Standard 선호 (Deno 가 default 로 URL import 와 Fetch 씀), 더 tight 한 standard library 원할 때.
Node + tsc + bundler — 특정 Node 버전 필요, 특정 Node-전용 library, 또는 전환 비용이 이득 초과하는 큰 기존 codebase 작업 시.