TypeScript.fm - The Friendly Show for TypeScript Developers
Kamran Ayub and Erik Onarheim
The two TypeScript Fools, Kamran Ayub and Erik Onarheim, get together once a week to bring you news, community highlights, and deep dives into the TypeScript ec...
In this episode, we are joined by special guest Josh Goldberg to teach us about getting started with TypeScript from scratch. If you're new to TS, this is a great introduction! And if you've been using TS for a long time, you can explain to your friends where they should start to make their experience smoother. In the news, Nx gets support for project references and we curate some of the best TSGo content.(00:36) Personal NewsIRL: Excalibur.js team will be at VGM Con (April 11-13, Minneapolis, MN)IRL: Erik is speaking at NDC Oslo (May 19-23)(04:28) Introducing Josh Goldberg(07:10) - Josh's Work as a Full-time Open Sourcer(09:05) - Getting Started with TypeScriptStart with the TypeScript Handbook (it's free!)Then, play with TypeScript in the playground(10:57) - Pain Points for New TypeScript Developers(12:41) - Benefits of TypeScript for Experienced Developers(14:43) - Getting Started with TypeScript(17:57) - CTA - create-typescript-appv2 rewrite spawned Bingo, dev tooling automation blocks(20:54) - Use Cases For Create TypeScript App(26:58) - CTA Plans for the Future(29:10) - Learning Resources for TypeScriptMatt Pocock (Total TypeScript)Cory House (Getting Started with TypeScript)Basarat (TypeScript Deep Dive)Code challenge: Advent of TSCode challenge: Advent of CodeCode challenge: Type Challenges(32:17) - And of course, Josh's Book: Learning TypeScript!Learn the why and theoryBlog and articlesBuy the book!(33:30) - Favorite Language Feature: Discriminated Unions(37:40) - Favorite Language Feature: Branded Types(38:58) - Creating TypeScript ESLint Rules(40:34) - Key Takeaways - Fun and Cool Stuff Happening!SquiggleConf 2025 CFP is open!(42:29) - Future of TypeScript and Linting InnovationsWrite your own TS linter(45:02) Where to Find JoshWebsiteFollow on BlueSky @JoshuaKGoldbergSponsor on GitHubAttend SquiggleConf 2025(46:55) News for the Week of March 10, 2025TSGo, but we already covered that (TS-a-Go-Go, Ep 9)Deno 2.2.4 update adds enhancements to OpenTelemetry (OTel) supportNx 20.5 adds TS project reference supportCory House releases a new TypeScript course on DometrainReact Router 7.3 minor releaseExperimental support for client contextsExperimental support for route middleware(49:25) - Community UpdatesDr. Axel's Corner - Dive deeper with this TSGO ExplainerSxzz (Kevin from Vite) created a TSGo playground with WASMTSGo community contentMiTS interviewSyntax interviewMatt Pocock interviewTheo's video(54:55) Cool StuffLearn Zod to Trust your Data and your Types (h/t cassidoo)50 Years of Travel Tips by Kevin Kelly"Your enjoyment of a trip will be inversely related to the weight of your luggage""Crash a wedding. You are not a nuisance; you are the celebrity guest!"TypeScript ESlint: Getting Started DocsEverhood Game (Steam | Add to your Backlog)Sponsored by Excalibur.jsExcalibur.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.MusicSeahorse Dreams by Kubbi (Spotify)Creators & Guests
Erik Onarheim - Host
Kamran Ayub - Host
Josh Goldberg 💖 - Guest
--------
56:54
TS-a-Go-Go | Ep 9
The Internet blows up as TypeScript reaches its next Pokemon evolution, and Kamran and Erik scramble to create an episode to pick up the pieces and make sense of it. In other news, TikTok announces Lynx, Angular gets some fetch upgrades, and Josh Goldberg releases v2 of create-typescript-app.Week of March 3, 2025(07:09) - Big News: TypeScript Is Getting 10X Faster(07:48) - Big-ish News: Lynx Announced, the React Native Killer?(11:46) - News: Angular 19.2 Released(12:53) - News: Corepack Voted to Be Taken Out of Nodejs Core(13:35) - News: traits-ts Library Released(14:23) - Community Highlight: Dr. Axel's Corner2ality: My TS Sales Pitch2ality: Unions and intersections of object types2ality: Gist for createEnum helper(17:50) - Community Highlight: Build TypeScript-first BlueSky Bots and Feeds(18:27) - Community Highlight: JavaScript Fatigue Strikes Back(19:06) - Community Highlight: Josh Goldberg Releases v2 of create-typescript-app(19:50) - Community Highlight: Alex Teaches Us About Cosine Similarity in TypeScriptPlus: 3Blue1Brown explainer video about vector embeddings Deep Dive: TypeScript is Being Ported to Go(22:04) - Deep Dive: TypeScript Is Being Ported to Go(23:58) - Deep Dive: Ports vs. Rewrites(24:50) - Deep Dive: Why Go?(25:54) - Deep Dive: Why Not Rust? Anders Explains(28:37) - Deep Dive: Why Not C#?(30:20) - Deep Dive: Go's Developer Experience(31:27) - Deep Dive: Running Concurrent Type Checking(32:54) - Deep Dive: 10X Is Just the Start(33:26) - Deep Dive: What's the Roadmap?(35:06) - Deep Dive: Impact on Ecosystem(43:32) - Deep Dive: Go Use It... in GoKevin Deng (sxzz) from the Vite team is maintaining a releases repository(45:20) - Deep Dive: What's Not Supported Yet(46:08) - Deep Dive: Props to the TeamOther LinksHabitica, a habit trackerrspack, a Rust port of webpack(47:34) - Secrets of the Handb--Actually, Just Go Build tsgo(47:48) - Cool Stuff: acorn-typescript is Now An Actively Maintained Fork(48:37) - Cool Stuff: Mentoss, a New Alternative to Nock and MSW(50:29) - Cool Stuff: Plane is the OSS JIRA-killer?(51:11) - Funny Stuff: Boss Refuses to Use TypeScript, What's the Next Best Thing?Sponsored by Excalibur.jsExcalibur.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.MusicSeahorse Dreams by Kubbi (Spotify)Creators & Guests
Erik Onarheim - Host
Kamran Ayub - Host
--------
53:09
React, TypeScript, and... Schbooleans? | Ep 8
This week Kamran dives into some nuances with using React with TypeScript while Erik plays the React fool and coins the word "schbooleans" (yep). In the news, erasableSyntaxOnly gets shipped, some new minor releases in the ecosystem, and oh, TypeScript types can run DOOM. Yes, TS is a real language now.Erik's NewsPersonal Blog Post: The Best Worst Year Happy New Year Excalibur! Excalibur 2024 Community Reel Erik didn't finish the flappy bird vid or lighting feature in time, consolation prizeFlappy Bird ArticleExcalibur Lighting PRs: Pipeline & PoC Week of February 24, 2025(04:16) - News: TypeScript 5.8 Releaseduserland-codemods for transforming import extensions to ".ts"(06:32) - News: Bun 1.2.4 Released(08:01) - News: Next.js 15.2 Released(09:29) - News: Astro 5.4 Released(09:49) - News: React Router 7.2 Released(10:25) - News: ArkType 2.1 Released(11:23) - News: Mozilla's Firefox Privacy Policy Rug-pull(14:32) - News: Warp Terminal is Now Available on Windows(15:55) - Community Highlights: TypeScript Types Can Run DOOM (!?)Write-up by Simon WillisonWrite-up on Socket.devMark Seeman's series (and course) on type-driven development (F#)(20:24) - Community Highlights: Dr. Axel's Cornerfree-typescript-resources GistTesting Types and asserttt(22:19) - Community Highlights: Safety-Web ESLint Plugin(23:27) - Community Highlights: Pattern for Strongly Typed Event Emitters(24:20) - Community Highlights: Websocks, a Typed WebSockets Router for Node Deep Dive: TypeScript and React Nuances(26:17) - Deep Dive: TypeScript and React(27:26) - Deep Dive: What You Need to Know FirstUsing Vite react-ts template(28:27) - Deep Dive: TSConfig Options for React and TS(32:55) - Deep Dive: How JSX/TSX Works Under the HoodDeno has native support for TSX/JSXAnd so does Bun(35:03) - Deep Dive: TSX in Different Runtimes(35:39) - Deep Dive: Typing Components and PropsExample of leaning on inference(38:12) - Deep Dive: Typing the Children Prop(40:13) - Deep Dive: Where Should Typings Go?(41:05) - Deep Dive: Should I Use React Class Components?(43:21) - Deep Dive: Typing Events and Callbacks(46:59) - Deep Dive: Typing Data and APIs(48:41) - Deep Dive: Typing Form Actions and "Schbooleans"(51:19) - Deep Dive: Typing State and Set-state Actions(54:11) - Deep Dive: Typing Contexts(54:49) - Deep Dive: Typing Refs and DOM Attributes(58:19) - Deep Dive: Sharing Typed Components in Libraries(59:56) - Deep Dive: Takeaways / tl;dlResource: React and TS CheatsheetsResource: Using React with TypeScript guided code lab on Pluralsight (requires subscription)Secrets of the Handbook(01:01:30) - Secrets of the Handbook: Our Favorite Utility TypesLinks(01:04:13) - Cool Stuff: Kamran's been playing Avowed and Pillars of Eternity(01:05:25) - Cool Stuff: Erik's spreads his stink with
--------
1:07:52
ORMed and Dangerous | Ep 7
This week Kamran and Erik discuss when ORMs are helpful... or hurtful. They cover trade-offs, the spectrum of abstraction, the value of escape hatches, and the options available to you in the TypeScript ecosystem.Week of February 17, 2025(05:54) - News: Ember 6.2 Released(07:16) - News: Deno 2.2 Releasednpm-check-updates packagePackage JSON Upgrade VS Code extensionhttps://github.com/vuki656/package-info.nvim for NeovimCommunity Highlights(16:48) - Community Highlights: UseTypeScript for Your Stored Procedures?!(17:20) - Community Highlights: Node API Compatibility Across Runtimes(17:58) - Community Highlight: Why Type Catalogs Can Be Better Than Unions(19:05) - Community Highlight: tapi.js Automatically Maps JSON to Strongly-Typed Classes(20:33) - Community Highlight: Standard Schema Hopes to Align TS Validator Libraries(21:34) - Community Highlight: 2ality: Read-only accessibility in TypeScript Deep Dive: TypeScript ORMs(22:56) - Deep Dive: TypeScript ORMs(24:21) - Deep Dive: Code-first or Database-first?(25:42) - Deep Dive: What Pain Do ORMs Solve?(27:21) - Deep Dive: When Should You Use an ORM?Martin Fowler's ORM Hate articlePrimeagen's Don't Use an ORM reaction video(30:02) - Deep Dive: To Use An ORM Or Not to Use an ORM?(31:47) - Deep Dive: SQL Builders vs. Abstracted ORMs(32:28) - Deep Dive: Do You Have An Escape Hatch?(33:36) - Deep Dive: Are ORMs A Symptom of Poor Data Architecture?(37:01) - Deep Dive: TypeScript ORM Landscape(37:26) - Deep Dive: Drizzle ORMFireship's Drizzle in 100 secondsWorks with Deno, Bun, Node.js(42:06) - Deep Dive: Prisma ORMWorks with Deno (unofficially) and Node.jsPrisma is being rewritten in TypeScript(46:42) - Deep Dive: MikroORM(49:10) - Tangent: Kamran and Erik Exchange War Stories(50:48) - Deep Dive: MikroORM Continued(51:44) - Deep Dive: TypeORM(53:06) - Deep Dive: ConvexDB(55:00) - Deep Dive: sequelize(55:48) - Deep Dive: Other AlternativesObjection.jsKnex.jsWaterlineBookshelfMongoose/Typegoose(56:33) - Deep Dive: Takeaways / tl;dlSecrets of the Handbook(57:47) - Branded / Nominal TypesTypeScript Playground Example – Nominal Typing400-comment GH issue on different ways to do nominal typing and trade-offsMichael Zalecki blog post on nominal types in TypeScriptBranded Types from Learning TypeScript by Josh GoldbergCreated a "sealed" method/class (example from Excalibur)Links(01:04:25) - Cool Stuff: Kodaps Academy on Drizzle Versus Prisma(01:05:10) - Cool Stuff: jet ValidatorsReference: https://blog.logrocket.com/best-typescript-orms/ Reference: https://www.sitepoint.com/javascript-typescript-orms/ Reference: https://www.timsanteford.com/posts/choosing-the-best-typescript-orm-for-your-project/ Sponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScrip...
--------
1:07:36
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, 2025TypeScript 5.8 RC Released -- Notably, the checked return expressions was walked back 🥹 But, it includes require(esm) support.Deno announced the JSR Open Governance BoardWarn or emit lint errors if your TypeScript contains erasable syntax with Josh Goldberg's new ESLint pluginWindows Terminal 1.22 released with support for Sixels graphicsNode 20 got require(esm) support backported.PSA: Node 18 EOL is April 30, 2025React team officially deprecates Create React AppBrowser vendors met to discuss which APIs to implement between them at Interop 2025Prettier 3.5 released with better TS supportAstro 5.3 has better overall performance and Netlify supportCommunity HighlightsTutorial: FreeCodeCamp build a React and TypeScript Wheel of Names projectVideo: 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.shVia The Good Dr. Axel RauschmayerBlog 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 docsBlog Post: Mapped TypesDiscussion: 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 typeTools: Kevin Deng is working on Unloader & UnpluginTools: A new Deno Bundler (dsbundle) Deep Dive: JSRJSR, an open source npm alternativeJSR's Provenance Attestation for verificationZero-config GitHub publishingDoesn't yet support private publish (but there's a workaround)No support in Artifactory yetJSR will warn you of slow typesKamran published ts-has-guards for guarding `Map.has` and related APIsErik published Excalibur's ECS core code for funJSR will score your packageNo scope squatting (or selling)!Secrets of the HandbookDecorators2ality's guide on decoratorsTC39 updates presentationoxc is working on support for modern and legacyLinksKat
Over TypeScript.fm - The Friendly Show for TypeScript Developers
The two TypeScript Fools, Kamran Ayub and Erik Onarheim, get together once a week to bring you news, community highlights, and deep dives into the TypeScript ecosystem. Stay up-to-date on what's happening and learn new things to make you a better TypeScript developer along the way!
Luister naar TypeScript.fm - The Friendly Show for TypeScript Developers, Acquired en vele andere podcasts van over de hele wereld met de radio.net-app