Back

effectivetypescript.com

A Small Year for tsc, a Giant Year for TypeScript - Effective TypeScript

12/19/2025Updated 3/26/2026
https://effectivetypescript.com/2025/12/19/ts-2025/

The two big announcements in 2025 were: 1. Microsoft is rewriting the TypeScript compiler and language service in Go. 2. Node.js began supporting TypeScript natively. … When I was developing my inferred type predicates feature, I was struck that the TypeScript in `tsc` is written in a distinctive, low-level style. It often looks more like C than JavaScript. I started to think about how you could turn that into a faster `tsc`. ... The upshot is that, sometime next year, you'll update your packages and everything will get 10x faster. Slow compiler and language service performance has always been one of the biggest complaints about TypeScript. I've experienced this myself on large projects and I'm looking forward to the speed boost. My other hope is that, once the dust settles, we'll see a renewed focus on new language features. ... Impressive stuff! This should work with any version of Node.js after 22.18.0, which was released on July 31st, 2025. (This behavior has been available since Node 22.6.0 last year via `--experimental-strip-types`.) This is a big deal. Ever since Node came out in 2009, people have been running preprocessors in front of it to improve JavaScript in various ways. CoffeeScript was one of the first, then we started using "transpilers" like Babel to get early access to ES2015 features, and now we use TypeScript to get types. In all these cases, we're adding a tool to the stack. It has to be configured, you have to know it exists, and something might go wrong with it. In short, it adds friction. … 2. Since this works by stripping types, you can't use TypeScript's niche runtime features: enums, parameter properties, triple-slash imports, experimental decorators, and member visibility modifiers (`private`). I've long advised against doing this (See Effective TypeScript Item 72: Prefer ECMAScript Features to TypeScript Features) and, as of TypeScript 5.8, there's an `--erasableSyntaxOnly` flag to keep you away from these. … I want to reiterate that this doesn't do any type checking! Node will happily run programs with clear type errors: `tsc` can strip type annotations, of course, but there are several other tools that do the same thing, like Bloomberg's aptly-named ts-blank-space. Node uses `@swc/wasm-typescript`, which uses WASM for speed.

Related Pain Points2