Skip to main content
Software Engineering Daily

TypeScript with Jake Bailey

46 min episode · 2 min read
·
Jake Bailey

Episode

46 min

Read time

2 min

Topics

Productivity, Remote Work, Startups

AI-Generated Summary

Key Takeaways

  • Module Migration Strategy: TypeScript converted from namespaces to ES modules using automated TSmorph transformations, gaining 30-40% performance by eliminating object property access overhead and enabling modern bundler optimizations like esbuild's 100ms compile times versus 30-second builds.
  • Monorepo Configuration: DefinitelyTyped's conversion to PNPM monorepo with 8,000 packages replaced file scanning with proper package dependencies and linking, eliminating false dependencies and enabling selective builds. Most TypeScript performance issues stem from misconfigured tsconfigs, not type system complexity.
  • Go Port Performance: Native Go implementation delivers 10x speedup through shared memory concurrency and parallel parsing. Projects with 30-minute builds now complete in 7 minutes, while editor startup times drop from 20-30 seconds to under 3 seconds on large codebases.
  • Language Selection Criteria: Go won over Rust and C# because TypeScript's synchronous code, cyclic data structures with parent pointers, and self-referencing types required one-to-one porting. Go's goroutines enable concurrency without async/await transformations, while Rust's borrow checker prevents direct AST cycles.

What It Covers

Jake Bailey discusses TypeScript's migration from JavaScript to Go, achieving 10x performance improvements through native code, parallelism, and architectural changes that reduce compile times from minutes to seconds across large codebases.

Key Questions Answered

  • Module Migration Strategy: TypeScript converted from namespaces to ES modules using automated TSmorph transformations, gaining 30-40% performance by eliminating object property access overhead and enabling modern bundler optimizations like esbuild's 100ms compile times versus 30-second builds.
  • Monorepo Configuration: DefinitelyTyped's conversion to PNPM monorepo with 8,000 packages replaced file scanning with proper package dependencies and linking, eliminating false dependencies and enabling selective builds. Most TypeScript performance issues stem from misconfigured tsconfigs, not type system complexity.
  • Go Port Performance: Native Go implementation delivers 10x speedup through shared memory concurrency and parallel parsing. Projects with 30-minute builds now complete in 7 minutes, while editor startup times drop from 20-30 seconds to under 3 seconds on large codebases.
  • Language Selection Criteria: Go won over Rust and C# because TypeScript's synchronous code, cyclic data structures with parent pointers, and self-referencing types required one-to-one porting. Go's goroutines enable concurrency without async/await transformations, while Rust's borrow checker prevents direct AST cycles.

Notable Moment

Bailey discovered TypeScript spent 30% of execution time on property access because namespace-based architecture forced object lookups for cross-file references. Converting to modules eliminated this overhead entirely, revealing massive hidden performance costs from legacy architectural decisions.

Know someone who'd find this useful?

Episode Transcript

TypeScript is a statically typed superset of JavaScript that adds optional type annotations and modern language features to improve developer productivity and code safety. The TypeScript compiler performs type checking at compile time, catching errors before code is run, and also transforms TypeScript code into clean, standards compliant JavaScript. Jake Bailey is a senior software engineer at Microsoft where he works on TypeScript and has made major contributions to the TypeScript compiler. Jake joins the podcast with Josh Goldberg to talk about TypeScript and his work. This episode is hosted by Josh Goldberg, an independent full time open source developer. Josh works on projects in the TypeScript ecosystem, most notably TypeScript eslint, the tooling that enables eslint and Prettier to run on TypeScript code. Josh is also the author of The O'Reilly Learning TypeScript book, a Microsoft MVP for developer technologies, and a live code streamer on Twitch. Find Josh on Blue Sky, Mastodon, Twitter, Twitch, YouTube, and .com as Joshua k Goldberg. Jake Bailey, welcome to Software Engineering Daily. Hello. How's it going? Hi. It's good. I'm so excited to talk to you, Jake. We've done so much work, and you've done so much work on on TypeScript and its tooling. Everyone's useful. What is your blue sky description, your profile, say? I think my profile says, according to Git blame, I wrote the TypeScript compiler, which is, like, not true, but it is true if you don't bother to ignore all the migrations I've made. So, yes. Then I guess if you look at the new repo, then it'll probably also say something similar, but There we go. Less so. The one and only author of TypeScript? No. No. No. No. Absolutely not. I'm new, okay? Well, we're going to get into that. But before we go through all the tooling stuff you've done with TypeScript and the work on TypeScript in Go, which is incredibly exciting, let's start with you. How did you get into coding, Jake? Oh. A long time ago, I was a child in elementary school, and I had a TI73. And by some coincidence, the teacher assigned an assignment, which was basically, I want you to tell the class about a button on the calculator. And I'm pretty sure I got assigned the program button. And so I had TI Basic. And so my first language was TI Basic in like, I don't know, the third grade, fourth grade. I don't know. One of those. It's been a lot of time, obviously. And then I just it's one of those things where it's like, I kind of think I knew what I was going to do from the beginning. And I think like in middle school, I'm like, I'm going to check out the book on C, and I just learned C. And then I was like, Man, I'd really like to work on Runescape private servers so that I'm just modifying Java and trying to convince my friends to install Hamachi so …

Get the full transcript (9,285 words) + summary by email — free

One-time email with the complete transcript and AI summary of this episode. No account needed.

One email, no spam. We’ll also show you what SignalCast does.

Browse all Software Engineering Daily transcripts →

You just read a 3-minute summary of a 43-minute episode.

Get Software Engineering Daily summarized like this every Monday — plus up to 2 more podcasts, free.

Pick Your Podcasts — Free

Keep Reading

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links.

Tools

  • DefinitelyTyped's conversion to PNPM monorepo with 8,000 packages replaced file scanning with proper package dependencies and linking
  • modern bundler optimizations like esbuild's 100ms compile times versus 30-second builds
  • TypeScript converted from namespaces to ES modules using automated TSmorph transformations, gaining 30-40% performance by eliminating object property access overhead

company

  • DefinitelyTyped's conversion to PNPM monorepo with 8,000 packages replaced file scanning with proper package dependencies and linking

More from Software Engineering Daily

We summarize every new episode. Want them in your inbox?

Similar Episodes

Related episodes from other podcasts

Explore Related Topics

This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.

Read this week's Startups & Product Podcast Insights — cross-podcast analysis updated weekly.

You're clearly into Software Engineering Daily.

Every Monday, we deliver AI summaries of the latest episodes from Software Engineering Daily and 192+ other podcasts. Free for one show.

Start My Monday Digest

No credit card · Unsubscribe anytime