TypeScript.fm - The Friendly Show for TypeScript Developers

TypeScript.fm - The Friendly Show for TypeScript Developers

By Kamran Ayub and Erik OnarheimNewsTechnologyTech News
Download on the App Store

TypeScript.fm - The Friendly Show for TypeScript Developers episodes

  • The Sheer Joy of Publishing to JSR | Ep 6

    This week Kamran and Erik unpack JSR, the new open alternative to the npm registry from the folks at Deno. They both published packages and discuss what JSR offers npm doesn't, when to use it, and how it works for both consumers and maintainers.

    • (00:00) - The Sheer Joy of Publishing to JSR | Ep 6
  • (05:40) - News: TypeScript 5.8 RC
  • (07:45) - News: JSR Open Governance Board
  • (08:59) - News: ESLint Plugin for erasableSyntaxOnly
  • (11:03) - News: Windows Terminal 1.22 Released
  • (15:31) - News: Create React App is Officially Deprecated
  • (17:50) - News: Interop 2025
  • (19:59) - News: Prettier 3.5 Released With Better TS Support
  • (20:42) - Community Highlight: Wheel of Names TypeScript+React Project Tutorial
  • (21:05) - Community Highlight: Repository Pattern and Clean Architecture with TS and Prism
  • (21:34) - Community Highlight: Welch Canavan on the Sheer Joy of Publishing to JSR
  • (22:01) - Community Highlight: The Good Doctor is On a Roll
  • (22:47) - Community Highlight: Tips for Migrating Node.js Projects to Deno
  • (24:09) - Community Highlight: Sort Object Properties by Type ESLint Plugin
  • (24:30) - Community Highlight: Unloader and Unplugin for TypeScript and oxc
  • (25:21) - Community Highlight: dsbuild Bundler for Deno
  • (25:54) - Deep Dive: What is a Pirate's Favorite Registry?
  • (27:49) - Deep Dive: Differences Between npm and JSR
  • (30:38) - Deep Dive: JSR's Security-First Approach
  • (32:39) - Deep Dive: Consuming JSR Packages in the Browser
  • (35:26) - Deep Dive: Should You Publish to Both npm and JSR?
  • (36:31) - Deep Dive: Can You Publish Private Packages?
  • (38:16) - Deep Dive: JSR's TypeScript-First Approach
  • (42:04) - Deep Dive: Can You Tag Versions?
  • (44:51) - Deep Dive: No API Keys for Publishing
  • (46:58) - Deep Dive: Yanking or Unpublishing a Package
  • (48:16) - Deep Dive: Kamran's Experience Publishing to JSR
  • (53:16) - Deep Dive: Erik's Experience Publishing to JSR
  • (55:06) - Secrets of the Handbook: Decorators
  • (01:00:03) - Cool Stuff: Write Vanilla CSS in TypeScript
  • (01:00:32) - Cool Stuff: Signals in Lit
  • (01:01:35) - Cool Stuff: Train Your vim Muscle Memory
  • (01:01:52) - Cool Stuff: AreTheTypesWrong.com
  • (01:02:44) - Cool Stuff: Homura Ham's Hamster Maze Videos
  • (01:05:10) - Bonus: JSR ASMR (?!)

  • Week of February 10, 2025
    • TypeScript 5.8 RC Released -- Notably, the checked return expressions was walked back 🥹 But, it includes require(esm) support.
    • Deno announced the JSR Open Governance Board
    • Warn or emit lint errors if your TypeScript contains erasable syntax with Josh Goldberg's new ESLint plugin
    • Windows Terminal 1.22 released with support for Sixels graphics
    • Node 20 got require(esm) support backported.
    • PSA: Node 18 EOL is April 30, 2025
    • React team officially deprecates Create React App
    • Browser vendors met to discuss which APIs to implement between them at Interop 2025
    • Prettier 3.5 released with better TS support
    • Astro 5.3 has better overall performance and Netlify support

    Community Highlights

    • Tutorial: FreeCodeCamp build a React and TypeScript Wheel of Names project
    • Video: Repository pattern and clean architecture with TypeScript / Prism (h/t Alex Rusin)
    • Blog post: The Sheer Joy of Publishing to JSR (h/t  I. Welsch Canavan)
    • Blog post: Deno on npm: specifiers vs transpiled services like esm.sh
    • Via The Good Dr. Axel Rauschmayer
      • Blog Post: extracting parts of composite types via `infer`
      • Blog Post: A guide to tsconfig.json (Updated for TS 5.8)
      • Blog Post: TypeDoc: testing code examples in comment docs
      • Blog Post: Mapped Types
    • Discussion: dayjay migrated all their Node.js projects to Deno. What did they learn?
    • Tools: Nir Tamir created a TS ESLint rule for sorting object properties by type
    • Tools: Kevin Deng is working on Unloader & Unplugin
    • Tools: A new Deno Bundler (dsbundle)


     Deep Dive: JSR

    • JSR, an open source npm alternative
    • JSR's Provenance Attestation for verification
    • Zero-config GitHub publishing
    • Doesn't yet support private publish (but there's a workaround)
    • No support in Artifactory yet
    • JSR will warn you of slow types
    • Kamran published ts-has-guards for guarding `Map.has` and related APIs
    • Erik published Excalibur's ECS core code for fun
    • JSR will score your package
    • No scope squatting (or selling)!

    Secrets of the Handbook

    • Decorators
    • 2ality's guide on decorators
    • TC39 updates presentation
    • oxc is working on support for modern and legacy



    Links

    • Kat
    1 hr 8 min
  • Compilers, Runtimes, and Funtimes | Ep 5

    This week Kamran and Erik try to dissect the complex landscape of JavaScript and TypeScript compilers, transpilers, interpreters, engines, and runtimes (oh my!). What are the tools, what are they used for, why is the world so complicated, and what should you care about as a TS developer?

    • (04:55) - This Week in TypeScript: Node.js Corepack Issue Affects Users
  • (06:16) - This Week in TypeScript: Vite and Vitest Security Vulnerabilities
  • (07:18) - This Week in TypeScript: 2ality on Enum Patterns
  • (08:51) - This Week in TypeScript: 2ality's Tutorial on Publishing ESM Packages with TypeScript
  • (09:53) - This Week in TypeScript: Should We Move On to ESM-Only?
  • (13:13) - This Week in TypeScript: HTTP2 Support Across Node.js, Bun, and Deno... Or Lack Thereof
  • (14:14) - This Week in TypeScript: Nx Has Some New TypeScript Monorepo Guides
  • (14:38) - This Week in TypeScript: Zero to Mastery Shares a TypeScript Cheat Sheet
  • (15:09) - This Week in TypeScript: TS Comment Directives
  • (17:21) - Deep Dive: Compilers and Runtimes
  • (19:32) - Deep Dive: What's the Difference Between a Compiler and Transpiler?
  • (21:11) - Deep Dive: Why Do We Need a TypeScript Compiler?
  • (22:02) - Deep Dive: The TypeScript Compiler (TSC)
  • (23:38) - Deep Dive: What's an Interpreter?
  • (25:06) - Deep Dive: What's an Engine?
  • (27:52) - Deep Dive: Recap So Far
  • (28:31) - Deep Dive: Babel, the OG Transpiler
  • (29:23) - Deep Dive: What is SWC?
  • (31:12) - Deep Dive: Using the verbatimModuleSyntax TSConfig Flag
  • (32:35) - Deep Dive: What is esbuild?
  • (34:23) - Deep Dive: Okay, What's the Difference Between SWC and esbuild?
  • (35:51) - Deep Dive: So, What is oxc Then??
  • (37:03) - Deep Dive: Erik Says checker.ts is "Gigundous" (???)
  • (37:58) - Deep Dive: Wait, oxc Can Output Type Declarations?!
  • (39:34) - Deep Dive: Writing Your TypeScript So It Compiles Faster
  • (41:10) - Deep Dive: What Does deno compile Do?
  • (42:12) - Deep Dive: What Are The Different JS/TS Runtimes?
  • (43:43) - Deep Dive: What Differentiates Bun from Deno?
  • (45:26) - Deep Dive: Serverless JavaScript Runtimes (workerd, Vercel Edge)
  • (46:48) - Deep Dive: Writing Isomorphic JavaScript or TypeScript
  • (47:44) - Deep Dive: Who Will Stop This Madness?
  • (50:11) - Deep Dive: Should Microsoft "Fix" TSC?
  • (53:43) - Deep Dive: WHAT DOES ALL THIS MEAN?
  • (57:36) - Secrets of the Handbook: Named Tuple Values
  • (01:00:59) - Cool Stuff: Node ES Language Support Matrix
  • (01:01:46) - Cool Stuff: VSCode Pretty TS Error Extension

  • Week of February 3, 2025
    • 📌 PSA: Node.js LTS corepack registry key signing issue breaks people's CI/CD pipelines and npm/pnpm installations. If you are affected, check this issue out! It’s fixed now and backported to Node 20.18.3.
    • 📌 PSA: There was a remote code execution vulnerability in Vitest, and a Vite dev server vulnerability. Update to the latest patch versions!

    Community Highlights

    • Blog Post: TypeScript enums: use cases and alternatives (Axel Rauschmayer)
    • Blog Post: Tutorial: publishing ESM-based npm packages with TypeScript  (Axel Rauschmayer)
    • Blog Post: Move on to ESM-only (Anthony Fu)
    • Blog Post: Fetch and HTTP/2 support in Node.js, Bun and Deno (George Haidar)
    • Learning: Nx is doing cool stuff for TS monorepo setups and has a whole series on it
    • Cheatsheet: Bookmark this TypeScript Cheat Sheet by Zero to Mastery (PDF version available)
    • Book: Joshua Goldberg has a new Learning TypeScript book and shares a tip about TS comments


     Compilers and Runtimes Deep Dive

    • The JavaScript Runtime Environment (Jamie Uttariello)
    • Wikipedia: ECMAScript Engines
    • V8's interpreter, Ignition
    • Hermes engine for React Native
    • TSC, the official Microsoft TypeScript compiler
    • SWC, a Rust-based compiler for JavaScript and TypeScript
    • esbuild, a Go-based compiler for JavaScript and TypeScript
    • oxc, a (new) Rust-based compiler by the creators of Vite
    • Deno compile for creating binary executables
    • Bun runtime, a drop-in replacement for Node
    • workerd runtime by Cloudflare
    • Vercel Edge Runtime
    • A list of WebAssembly (WASM) runtimes
    • WinterTC, a committee for unifying server backend runtime APIs


    Links

    • TypeScript 4.0's labeled tuple elements (playground link)
    • Wondering what version of Node supports what ES features and syntax? https://node.green/
    • Replace those ugly TS errors in VSCode with something more pretty


    Sponsored by Excalibur.js
    Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

    Music
    Seahorse Dreams by Kubbi (Spotify)

    Creators & Guests

    • Kamran Ayub - Host
    • Erik Onarheim - Host
    • 1 hr 4 min
    • You Say Vite, I Say Vite | Ep 4

      This week Erik and Kamran talk about Vite (Vight? Veet?), what it's good for, how it works, and its status as the "go-to" tool for frontend tooling.

      • (04:21) - This Week in TypeScript: TS 5.8 Beta
    • (11:02) - This Week in TypeScript: Ruck 9 Released
    • (12:39) - This Week in TypeScript: Type Stripping in the Browser
    • (14:45) - Community Highlight: Deno and Qwik Video
    • (15:52) - Community Highlight: Zig, TypeScript, and WASM by David Bushell
    • (16:49) - New Library Watch: tsc-extra
    • (17:24) - New Library Watch: typemap and typebox
    • (18:23) - Vite Overview
    • (22:01) - Vite: Getting Started
    • (22:53) - Vite: build and preview
    • (23:34) - Vite: How Does It Work?
    • (26:57) - Vite: Support for Libraries and Frameworks
    • (28:04) - Vite 6.0: Environments API
    • (30:27) - Vite 6.0: Support for Additional HTML Asset References
    • (31:28) - Vite: Testing with Vitest
    • (32:48) - Vite Gripes and Gotchas
    • (33:52) - Vite Gripes: Dev and Prod Build Inconsistencies
    • (35:14) - Vite Gotcha: Forgetting to Set a URL Base
    • (35:49) - Vite Gotcha: Targeting Legacy Browsers
    • (38:30) - Vite Gripes: npm linking
    • (41:43) - Vite's Future: What Are We Excited About?
    • (44:12) - Secrets of the Handbook: Type Guards and Predicates
    • (47:27) - Cool Stuff: Write Typesafe Emails with React.email
    • (49:51) - Cool Yet Questionable Stuff: Custom Type Errors When Working With Generics

    • Week of January 27
      • News: TS 5.8 Beta Released
      • News: Ruck 9, a Deno web framework
      • News: Guy Bedford releases [email protected], allowing type stripping in the browser
      • Community: Qwik and Deno (📸 Video)
      • Community: Benchmarking Zig, TS and WASM by David Bushell (✍️ Blog Post)
      • New Libraries
        • tsc-extra
          • Static analysis tool, type checking only, no code generation or compiling
          • Useful for documentation or lower-level TS tools
        • Typemap is like a Zod alternative, built for TypeBox
          • “It offers a common TypeScript syntax for type construction, a runtime compiler for high-performance validation and type translation from one library to another.”

       Vite Deep Dive

      • Homepage
      • Evan You's State of Vite 2023 Keynote (📸 Video)
      • Why Use Vite?
      • Vite 6 Updates
      • Sapphi-Red's Increasing Vite's Potential With the Environment API (✍️ Blog Post)
      • Vite's browser compatibility
      • Vite's future, bundling with Rolldown


      Links

      • Handbook: Type Guards and Predicates
      • Send typesafe emails with React.email
      • Better string literal errors (📸 Video)


      Sponsored by Excalibur.js
      Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

      Music
      Seahorse Dreams by Kubbi (Spotify)

      Creators & Guests

      • Kamran Ayub - Host
      • Erik Onarheim - Host
      • 54 min
      • We Don’t Talk About Deno-no-no | Ep 3

        This week Erik and Kamran make poor dad jokes, talk about Deno, and tour its ecosystem. If you're new to Deno, this will be a great introduction!

        • (00:00) - We Don't Talk About Deno-no-no-no | Ep 3
      • (06:54) - This Week in TypeScript: Bun 1.2 Released
      • (10:54) - This Week in TypeScript: 5.8's ErasableSyntaxOnly Flag
      • (14:57) - This Week in TypeScript: Tailwind 4 Released
      • (16:26) - This Week in TypeScript: Vitest 3 Released
      • (17:17) - Errors and Corrections
      • (18:46) - Deep Dive Into Deno
      • (22:19) - Deno's Integrated CLI
      • (23:50) - Deno CLI: deno run
      • (24:28) - Deno CLI: deno add, install, remove, uninstall
      • (25:01) - Deno CLI: deno task
      • (26:19) - Deno CLI: deno test
      • (27:18) - Deno CLI: deno fmt, deno lint, and deno check
      • (28:15) - Deno CLI: deno serve
      • (29:26) - Deno CLI: deno doc
      • (30:07) - Deno CLI: deno bench
      • (31:24) - Deno's Standard Library
      • (33:21) - Deno CLI: deno compile
      • (36:24) - Deno's Performance
      • (37:32) - What is Deno Fresh?
      • (38:17) - What is JSR?
      • (39:43) - What is Deno Deploy?
      • (40:38) - Moving from Node to Deno as a Developer
      • (45:48) - Deno CLI: deno upgrade
      • (47:13) - What Are We Excited About In the Future With Deno
      • (48:13) - Secrets of the Handbook: TSConfig's extendedDiagnostic
      • (50:12) - Cool Stuff: Serve a Folder in a Single Deno Command
      • (50:44) - Cool Stuff: Flappy Bird Clone in Deno Compile

      • News
        • Bun 1.2 released
        • Matt Pocock's take on erasableSyntaxOnly
          • TC39 Types as Comments proposal
        • Tailwind 4 released
        • Vitest 3 released

        Deno Deep Dive

        • Deno’s 2024 in review blog post
        • Rusty v8 -- Rust bindings for V8
        • Deno CLI docs
        • Performance
          • Deno benchmark stats
          • Denosaurs benchmarks
          • AWS Lambda cold-starts
        • Deno Fresh
        • JSR
        • Deno Deploy
        • Kamran's Advent of Code 2024 repo using Deno

        Links

        • Learn Vim’s keyboard shortcuts with Vim Adventures
        • Minnesota's Art Shanty Projects during the winter
        • Secrets of the Handbook: TSConfig – extendedDiagnostics
        • Alias to serve a folder using a single Deno command like npx serve (h/t Kamran)
        • Deno Compile video with Flappy Bird


        Sponsored by Excalibur.js
        Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

        Music
        Seahorse Dreams by Kubbi (Spotify)

        Creators & Guests

        • Kamran Ayub - Host
        • Erik Onarheim - Host
        • 53 min
        • Node 23 Gets TypeScript Support, Mostly | Ep 2

          In this episode, Kamran and Erik discuss the newly released TypeScript support with Node 23.6 and its implications. What's supported? What's not supported? And how does it differ from Bun or Deno?

          • (00:00) - Ep 2 - Node 23 Gets TypeScript Support
        • (00:05) - Introduction
        • (04:04) - TypeScript News and Announcements
        • (10:27) - A Closer Look at Type Stripping for Node 23
        • (22:56) - Differences Between Node 23 and Deno 2
        • (30:22) - Cool TypeScript Stuff

        • News
          • Everything You Need to Know About Node.js Type Stripping by Marco Ippolito
            • Node 23.6.0 Release Notes -- The one with TypeScript support
            • Docs: Node 23 “Modules: TypeScript”
            • Node's new built-in support for TypeScript by Dr. Axel Rauschmayer
          • Native Typescript support coming to Eleventy by Zach Leatherman (PR)
          • ESLint 9.18 – Zero-config TypeScript support by Andrey Sitnik
          • TypeScript 5.8: Erasable Syntax Only
          • PSA: Create React App doesn’t work with React 19, use Vite!

          Errata

          • 19:11 -- We incorrectly assumed that TSC is used for the transpilation in Node 23, but that's not true. SWC still handles the transpilation (if the flag is used) so Node's TypeScript support does not rely on TSC at all. Reported by: Marco Ippolito


          Cool Stuff

          • Jiti: A Node.js package for ESM and TypeScript support
          • Example of `satisfies never` with switch statements by Cecile Muller, Bluesky
            • What is the “satisfies” type constraint? By Matt Pocock
          • Dockview – npm package for a TypeScript native window manager
          • Using “as const” for config typing by Matt Pocock

          Sponsored by Excalibur.js
          Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

          Music
          Seahorse Dreams by Kubbi (Spotify)

          Creators & Guests

          • Kamran Ayub - Host
          • Erik Onarheim - Host
          • 37 min
          • Two TypeScript Fools, One Podcast | Ep 1

            In the inaugural episode of TypeScript.fm, the two fools introduce themselves, share their "origin stories," and share plans for the podcast. Briefly covered in the news: Vite 6, Deno 2's expansion of the ecosystem, Node 23's new TypeScript support, and the latest Excalibur.js 0.30.0 release.

            • (00:00) - Ep 1 - Two TypeScript Fools, One Podcast
          • (00:12) - Introduction
          • (21:31) - News Segment
          • (29:38) - TypeScript Tricks Segment

          • News
            • Vite 6 is out! Check out the new Environments API.
            • Deno 2.1 was released in November -- Node.js compatibility, npm packages, WebAssembly
            • Node 23 support for TypeScript (via Matt Pocock)
            • Excalibur.js v0.30.0 - Performance improvements, GPU particle acceleration, brand new Excalibird tutorial, and more


            Links

            • StackOverflow 2024 Survey – TypeScript is #5 in Programming Languages
            • Zod - TypeScript-first schema validation
            • QuickJS -- Embeddable JavaScript engine (like Lua for C)
            • Nivo -- Charting library with TypeScript support

            Sponsored by Excalibur.js
            Excalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.

            Music
            Seahorse Dreams by Kubbi (Spotify)

            Creators & Guests

            • Kamran Ayub - Host
            • Erik Onarheim - Host
            • 44 min

            About TypeScript.fm - The Friendly Show for TypeScript Developers

            From the publisher's feed

            The two TypeScript Fools, Kamran Ayub and Erik Onarheim, get together weekly to bring you news, community highlights, and deep dives into the TypeScript ecosystem. Stay up-to-date on what's happening…

            More shows like TypeScript.fm - The Friendly Show for TypeScript Developers

            Software Engineering Radio - the podcast for professional software developers by team@se-radio.net (SE-Radio Team)

            Software Engineering Radio - the podcast for professional software developers

            275 Listeners

            Modern Web by Modern Web

            Modern Web

            12 Listeners

            JavaScript Jabber by Charles M Wood

            JavaScript Jabber

            62 Listeners

            Syntax - Tasty Web Development Treats by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers

            Syntax - Tasty Web Development Treats

            984 Listeners

            Practical AI by Daniel Whitenack and Chris Benson

            Practical AI

            208 Listeners

            Last Week In AWS Podcast by Corey Quinn

            Last Week In AWS Podcast

            79 Listeners

            PodRocket by LogRocket

            PodRocket

            59 Listeners

            Oxide and Friends by Oxide Computer Company

            Oxide and Friends

            66 Listeners

            Front-End Fire by TJ VanToll, Paige Niedringhaus, Jack Herrington

            Front-End Fire

            11 Listeners