TypeScript.fm - The Friendly Show for TypeScript Developers

State of TypeScript Linting 2025 | Joshua Goldberg | Ep 29B


Listen Later

Joshua Goldberg (JoshuaKGoldberg.com), creator of typescript-eslint, joins us to discuss the state of linting TypeScript projects in 2025. Which linters should we pay attention to? Why are there so many? What's unique about TypeScript? Josh shares his perspective and covers what to look for in a linter and how best to utilize them in your projects.

Chapters

  • (00:00) - Introducing Josh Goldberg
  • (02:10) - Why Are There So Many Linters?
  • (02:48) - Why Do I Need a Linter With TypeScript, Anyway?
  • (04:13) - Landscape of Linters in 2025
  • (06:56) - How Does TypeScript Linting Actually Work?
  • (08:15) - Creating Type-aware Native Speed Linters
  • (11:06) - What Would the Ideal Linter Look Like?
  • (12:48) - Where is the Bottleneck in Type-aware Linting?
  • (15:15) - Are Native Speed Linters the Answer?
  • (21:03) - Okay, So Which Linter Should I Use?
  • (23:33) - Are There Some Golden Type-aware Rules to Use?
  • (24:44) - Customizing Your Linting Setup
  • (27:05) - Writing Your Own Custom Lint Rules
  • (31:08) - Josh's Recommended ESLint Plugins
  • (34:15) - Future of Linting with Flint
  • (36:37) - Attend SquiggleConf 2025 in Boston

  • Linters
    • typescript-eslint (stable) – TypeScript, most type-aware lint rules
    • oxlint (stable) – Rust, no type-aware lint rules
    • Biome (stable) – Rust, limited type-aware lint rules in V2
    • tsslint (stable) – TypeScript, integrates with tsserver, custom rules with TS compiler API
    • tsl (new) – tsc plugin that ports a selection of typescript-eslint type-aware lint rules
    • Deno lint (stable) – Rust, subset of ESLint rules, no type-aware lint rules
    • Flint (unstable) – TypeScript, Josh’s fast, friendly linter, still in development
    • tsgolint (prototype) – Go, proof-of-concept experimental TypeScript Native integration


    Resources

    • Learn: Vanilla TypeScript Experience
    • Learn: ASTs and typescript-eslint
    • Learn: If I Wrote a Linter, Part 4: Summary 
    • Learn: TypedRocks Builds a Type-aware ESLint Plugin
    • DustinSpecker/awesome-eslint – a list of awesome ESLint plugins and resources
    • JoshuaKGoldberg/create-typescript-app – pick and choose the rules you like
    • ESLint now supports linting for Markdown and CSS
    • Josh’s Favorite Rules and Plugins:
      • typescript-eslint/no-floating-promises – to avoid non-awaited Promises
      • typescript-eslint/no-deprecated – to avoid calling deprecated APIs
      • eslint-plugin-regex – to catch ReDOS vulnerabilities
      • eslint-plugin-n – for Node.js projects
      • eslint-plugin-jsdoc – for the “informative docs” rule
      • eslint-plugin-erasable-syntax-only – to enforce erasable syntax in your TS project (prior to TS 5.8)
      • eslint-plugin-package-json – lint your package.json file


    Where to Find Josh

    • JoshuaKGoldberg.com
    • Flint Discord
    • Josh on BlueSky
    • Josh on Fosstodon
    • Josh on GitHub

    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)

    ...more
    View all episodesView all episodes
    Download on the App Store

    TypeScript.fm - The Friendly Show for TypeScript DevelopersBy Kamran Ayub and Erik Onarheim

    • 4.8
    • 4.8
    • 4.8
    • 4.8
    • 4.8

    4.8

    5 ratings


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

    View all
    Freakonomics Radio by Freakonomics Radio + Stitcher

    Freakonomics Radio

    32,006 Listeners

    Hanselminutes with Scott Hanselman by Scott Hanselman

    Hanselminutes with Scott Hanselman

    383 Listeners

    The Changelog: Software Development, Open Source by Changelog Media

    The Changelog: Software Development, Open Source

    289 Listeners

    Software Engineering Daily by Software Engineering Daily

    Software Engineering Daily

    626 Listeners

    Soft Skills Engineering by Jamison Dance and Dave Smith

    Soft Skills Engineering

    289 Listeners

    Cortex by Relay

    Cortex

    1,282 Listeners

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

    Syntax - Tasty Web Development Treats

    988 Listeners

    REWORK by 37signals

    REWORK

    210 Listeners

    .NET Rocks! by Carl Franklin and Richard Campbell

    .NET Rocks!

    244 Listeners

    The Stack Overflow Podcast by The Stack Overflow Podcast

    The Stack Overflow Podcast

    64 Listeners

    Dwarkesh Podcast by Dwarkesh Patel

    Dwarkesh Podcast

    511 Listeners

    PodRocket by LogRocket

    PodRocket

    60 Listeners

    The Ezra Klein Show by New York Times Opinion

    The Ezra Klein Show

    15,938 Listeners

    Oxide and Friends by Oxide Computer Company

    Oxide and Friends

    62 Listeners

    The Pragmatic Engineer by Gergely Orosz

    The Pragmatic Engineer

    64 Listeners