mrkeyoor.com_
Tue 29 Sept 18:26 UTC
Dev Toolsevaluationupdated 25 Aug 2026

TypeScript review

TypeScript adds static types and editor tooling to JavaScript, then emits ordinary JavaScript for browsers, servers, and other runtimes. Version 7 moves the compiler and language server to a native Go implementation while keeping npm as the normal installation channel.

+88stars / 7d
Verdict

Our TypeScript checkout installed 445 packages in 31 seconds, but build and tests both failed within 7 seconds because the Node image had no Go executable, so contributors need the new native toolchain even though users still install from npm. TypeScript 7 is the default choice for typed JavaScript applications, especially large builds that can use its parallel compiler. Keep TypeScript 6 beside it when framework integrations or internal tools still depend on the compiler API.

We ran it

Lab card: what happened when we ran TypeScriptScreenshot of TypeScript (www.typescriptlang.org)
Install✓ · 31s445 packages · 447 MB
Build✗ · 7s
Tests✗ · 6sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo65848 files~2,560,730 lines of source · 211.8 MB · 8 CI workflows

Answers from our run

Does TypeScript build from source?

Dependencies installed in 31 seconds (445 packages), and the build failed. We cloned commit e9e4774 into a clean Debian container with 3 CPUs and no project-specific setup.

Do TypeScript's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does TypeScript have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use TypeScript?

Tools that require the compiler API today: the TypeScript 7.0 release says the native port ships without a programmatic API and recommends the 6.0 compatibility package.

What are the alternatives to TypeScript?

Flow, Deno, SWC. Our TypeScript checkout installed 445 packages in 31 seconds, but build and tests both failed within 7 seconds because the Node image had no Go executable, so contributors need the new native toolchain even though users still install from npm.

Setup4/5One npm package for users; Go 1.26 and Node 24 for contributors
Docs5/5Deep handbook, migration notes, release posts, and contributor rules
Community5/5110,686 stars with issues and pull requests active the same day
Maturity5/5Established language with a tested native compiler transition

Discussed on

  1. hnGoogle Feedback on TypeScript 3.5396 points
  2. hnPR that converts the TypeScript repo from namespaces to modules338 points
  3. hnTypeScript: Control flow analysis for destructured discriminated unions299 points
  4. hnTips for Performant TypeScript281 points
  5. hnTypeScripts Type System Is Turing Complete221 points

Who it’s for

JavaScript teams that need safer refactoring and better editor feedback across a growing codebase.
Library authors publishing declarations for typed consumers.
Monorepos that benefit from project references and TypeScript 7's parallel native compiler.
Contributors comfortable working across Go, Node.js, generated baselines, and a large compatibility suite.

Who it’s NOT for

Tools that require the compiler API today: the TypeScript 7.0 release says the native port ships without a programmatic API and recommends the 6.0 compatibility package.
Vue, Svelte, Astro, MDX, or Angular template tooling that embeds TypeScript: the 7.0 announcement says those workflows will likely stay on 6.0 for now.
Contributors with only Node.js installed: current prerequisites include Go 1.26, Node.js 24, npm, and Git.
Teams expecting types to enforce runtime input safety: TypeScript erases its types and still needs validation at network, file, and user-input boundaries.
Anyone planning bulk agent-generated pull requests: the contribution policy says those submissions will be closed and repeat accounts may be blocked.

Setup reality

Our sandbox installed 445 npm packages in 31 seconds and used 447 MB on disk. Build failed with exit code 1 after 7 seconds because the task tried go build and the shell returned spawn go ENOENT. Tests failed after 6 seconds for the same reason when go test ./... started.

Using TypeScript only needs an npm development dependency. Contributing is different: the guide requires Go 1.26, Node.js 24, the package's declared npm version, and Git. It also asks contributors to run generation, native builds, Go tests, API tests, lint, formatting, workspace builds, module tidy checks, and go work sync.

The 211.8 MB checkout contained 65,848 files and about 2,560,730 source lines, with 8 CI workflow files and monorepo workspaces. npm audit found 0 known vulnerabilities in our installed dependency tree. TypeScript 7 is native, but npm still distributes the executable and supports the 6.0 package beside it for API-dependent tools.

TypeScript 7 keeps npm but replaces the compiler core

TypeScript still solves the same problem: JavaScript is flexible at runtime, but large teams need names, shapes, and relationships checked before code ships. Developers add types, the compiler reports mismatches, and emitted output remains standards-based JavaScript. Editors use the same analysis for completion, navigation, rename, and diagnostics. The language works with existing JavaScript incrementally rather than demanding a clean rewrite.

Version 7 changes the implementation beneath that contract. Microsoft ported the compiler and language server to Go, publishes the native executable through the familiar typescript npm package, and uses the Language Server Protocol for editors. The release announcement says full builds commonly improve by 8x to 12x in Microsoft's comparisons. Those are vendor measurements, not numbers from our sandbox, and teams should measure their own projects.

The repository now reflects that move. GitHub identifies Go as its primary language, and the contributor guide names Go 1.26 plus Node.js 24 as prerequisites. A Go workspace holds compiler modules under tsc/ and tools/, while Node still orchestrates builds, packages, generated assets, and workspace tasks. Anyone remembering TypeScript as a self-hosted compiler should reset their source-development assumptions.

The missing API is the main 7.0 compatibility boundary

TypeScript 7.0 does not expose a stable programmatic compiler API. Microsoft provides @typescript/typescript6, including a tsc6 executable and the 6.0 API, so projects can use the native compiler for ordinary checks while tools keep importing the older API. npm aliases help when a peer dependency insists that the package be named typescript. This is a workable bridge, but it is extra dependency and configuration work.

The gap matters most to tools that embed TypeScript. The release post says Vue, MDX, Astro, Svelte, and specialized Angular template checking will likely remain on 6.0 until a new API is available. It says the team expects 7.1 to ship a new and different API, which is an expectation rather than a guarantee we should turn into a delivery promise. Framework teams should verify their exact plugin path before upgrading.

Ordinary application builds have a cleaner story. TypeScript 7 aims for compatible type checking and command-line behavior with 6.0 when the documented settings are used, though it also adopts 6.0 defaults and rejects constructs deprecated there. Parallel parsing, checking, emitting, and project builds can use several cores. Flags control checker and builder counts, while --singleThreaded supports constrained systems and debugging.

What happened when we ran it

Our run installed 445 npm packages in 31 seconds and left 447 MB on disk. npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities. The checkout itself was 211.8 MB, containing 65,848 files and about 2,560,730 lines of source. This is a large compiler and language-service monorepo, despite the small user-facing install command.

The build failed with exit code 1 after 7 seconds. Hereby started the library copy and tsc:build, then attempted go build for the native compiler. The process returned spawn go ENOENT, which plainly means no go executable was available. The failure happened in 15 milliseconds inside that task, before compiler code could build.

Tests failed with exit code 1 after 6 seconds for the same missing executable. Hereby invoked go test ./... --timeout=45m; process creation returned spawn go ENOENT after 8 milliseconds. The log shows no Go test case starting and no failed assertion. Our Node 22 image was enough for npm ci, but it did not meet the documented Go 1.26 and Node 24 contributor prerequisites.

The type system helps at compile time, not at your API edge

TypeScript types disappear from emitted JavaScript. A typed request body can still contain bad runtime data, and an as assertion can silence useful checking without changing the value. Production applications still need schema validation for HTTP payloads, environment variables, database rows, and files. TypeScript is strongest when it catches mistakes between trusted parts of a codebase, not when it is treated as a runtime security layer.

Its structural type system fits JavaScript patterns well, and declaration files let plain JavaScript packages describe their public surface. The cost is that advanced conditional, mapped, and recursive types can become programs of their own. When a team spends more time deciphering helper types than reading application logic, simpler annotations are usually the better design even if the compiler could express more.

SWC is a relevant alternative when fast syntax transformation is enough, but it does not replace full TypeScript checking. Deno is compelling when a team can choose an integrated runtime and toolchain. Flow remains an option for existing Flow shops. For mainstream JavaScript libraries and applications, TypeScript's package and editor reach makes it the baseline comparison rather than a niche upgrade.

Same-day issue work shows an active migration

GitHub showed 110,686 stars, 5,191 open issues and PRs, and a push on 2026-08-25. Release v7.0.2 arrived on 2026-08-20. Current reports cover native-preview editor behavior, LSP failures, auto-imports, API requests, and compatibility regressions. That queue includes suggestions and pull requests, so it is not a count of confirmed bugs. It does expose the breadth of the migration still being tuned.

The contribution policy is unusually explicit about AI. A human may use Claude Code, Codex, Cursor, or another agent for a selected change if they understand it, disclose assistance, and handle review. Bulk agent-driven submissions and automated issue comments are forbidden. That rule is grounded in duplicate patches already consuming maintainer time, and contributors should treat it as an access boundary rather than optional etiquette.

TypeScript 7 is ready to evaluate as the main compiler for normal JavaScript and TypeScript builds. The 6.0 compatibility package remains necessary for compiler-API consumers and several embedded-language tools. Users get the native executable through one npm dependency; contributors need the full Go and Node toolchain that our sandbox lacked.

Alternatives

ProjectWhat it isPick it when
Flow gh↗A static type checker for JavaScript with its own annotation and inference model.pick this instead when an existing Flow codebase and its analysis model matter more than ecosystem reach.
Deno gh↗A JavaScript and TypeScript runtime with formatting, linting, testing, and type checking included.pick this instead when you can choose the runtime and want an integrated toolchain.
SWC gh↗A fast Rust-based compiler for JavaScript and TypeScript syntax without full TypeScript type checking.pick this instead when transformation speed matters and another tool can own type analysis.

What people are saying

  1. [github-trending] microsoft/TypeScript
  2. [github-trending] microsoft/typescript-go
  3. [github-trending] modelcontextprotocol/typescript-sdk

Sources

  1. TypeScript README
  2. TypeScript contributing guide
  3. Announcing TypeScript 7.0
  4. TypeScript 7.0.2 release

More dev tools reviews

Kaku · kordoc · hey · wechat-miniapp-radar · omarchy-workspace-layout · fermats-last-theorem · the whole board →