TypeScript-Go toolchain
ttsc
Build with TypeScript-Go. Run scripts only after they type-check. Let plugins see the same types the compiler sees.
10x
faster type checks
Up to 10x faster than JavaScript tsc through TypeScript-Go.
800x
faster lint loop
Measured on the VS Code fixture against ESLint.
type-safe
script execution
ttsx checks the project before Node receives the entrypoint.
compiler pathttscbuild / check / watch
ttsxchecked script runner
@ttsc/lintrules as compiler diagnostics
@ttsc/graphcode map for coding agents, over MCP
pluginsAST + Checker before emit
src/index.ts:3:7 - error TS2322
Type errors and lint rules land in the same diagnostic stream.
[Toolchain]
One compiler path, not a pile of wrappers.
Keep the existing tsconfig.json. The same project graph feeds the CLI, runner, linter, editor, bundlers, and plugins.
01
read tsconfig
02
type-check
03
run plugins
04
emit, execute, or report
ttscCompiler
Build, check, watch, emit, and run source transforms on top of TypeScript-Go.
build / check / watch
ttsxRunner
Execute a TypeScript entrypoint only after the owning project passes type-check.
typed tsx-style scripts
@ttsc/lintLint and format
Report rules as TS diagnostics, apply autofixes, and format through the same compiler pass.
fix / format / TSxxxxx
@ttsc/graphCoding agents
Hand a coding agent a checker-resolved map of your codebase over MCP, so it stops grepping and re-reading files.
MCP code graph
[Diagnostics]
Type errors and lint errors should look like one failure.
ttsc can print rule violations as TS diagnostics. Local runs, CI, and the editor all point at the same file, line, and rule.
type errors
lint violations
format fixes
editor underlines
src/index.ts:3:7 - error TS2322: Type 'number' is not assignable to type 'string'.src/index.ts:2:5 - error TS17397: [prefer-const] Use const instead of let.src/index.ts:1:1 - error TS11966: [no-var] Unexpected var, use let or const instead.1 var x: number = 3; ~~~~~~~~~~~~~~~~~~2 let y: number = 4; ~~~~~~~~~~~~~3 const z: string = 5; ~45 console.log(x + y + z);Found 3 errors in the same file.
[Plugins]
Plugins get the compiler's eyes.
A plugin is not a string replacement pass. It runs beside the TypeScript-Go AST and Checker, then reports diagnostics or rewrites source before JavaScript is emitted.
Explore plugins[Playground]
Try the compiler path in the browser.
The playground boots the WebAssembly build of ttsc in a worker. Your source stays in the tab while you test diagnostics, transforms, and emitted output.
globalThis.ttsc.build()
Same engine shape as the CLI, packaged for in-tab demos and plugin playgrounds.
[Sponsors]
Built with help from people who keep the work moving.
Sponsor support funds the quiet work behind ttsc: TypeScript-Go upgrades, platform binaries, plugin compatibility, documentation, and the playground.
Thank you for your support