"Backend TypeScript: pick the runtime, write the code, type-check separately."
Node + tsx vs Bun
For TypeScript on the backend, two practical paths in 2026:
Node + tsx: Node.js with the tsx wrapper (npx tsx server.ts). Tsx uses esbuild under the hood to transpile on the fly. Works with every Node-compatible library; the dev experience is unified through tsc --noEmit for type checking.
Bun: Native TypeScript runtime (bun run server.ts). Faster startup, built-in test runner, bundler, package manager. Most Node-compatible libraries work; some Node internals need adapters.
Express/Fastify/Hono with TypeScript
The popular Node frameworks all have first-class TypeScript types. Express requires @types/express; Fastify and Hono ship their own types.
Hono is the new lightweight contender — designed for the edge (Cloudflare Workers, Bun, Deno) and TypeScript-first. The route handlers have inferred parameter and body types when you use its validation middleware.
The shared shape
Whichever you pick, the TypeScript story is the same: write .ts, run with a TS-aware runtime/wrapper, type-check separately. The differences are speed, library compatibility, and ergonomics — not the type system.