tt-lang
v0.3.0-dev.4.20260823.133607.9.1
Published
tt — a tiny TypeScript preprocessor adding Rust-style enums, match expressions, try, let-else, if let and the pipeline operator. Installs the ttc compiler.
Maintainers
Readme
tt-lang
tt is a tiny preprocessor language that compiles to TypeScript. It adds
Rust-style tagged unions and pattern matching, concise Option/Result
control flow, pipelines, and mutation-safe bindings while keeping valid
TypeScript valid.
This package installs ttc, the tt compiler, as a prebuilt native binary —
no Rust toolchain required.
For a complete Bun + Vite project, or to add tt to an existing TypeScript project, use the initializer instead:
bun create tt@latest my-app
bun create tt@latest initbun add -d tt-lang typescript@7bunx ttc -o build src/ # compile a source tree to TypeScript
bunx ttc --check src/ # check without writing anything
bunx ttc --types src/ # editor/typecheck declarationsUsing a bundler? unplugin-tt
reads .tt files directly in Vite, Rollup, webpack, Rspack, esbuild and
Farm, and finds this package's binary automatically.
Supported platforms
Prebuilt binaries ship as optional dependencies; npm installs the one matching your machine.
| Package | OS | CPU |
|---------|----|----|
| tt-lang-linux-x64 | Linux | x64 (static musl build) |
| tt-lang-linux-arm64 | Linux | arm64 (static musl build) |
| tt-lang-darwin-x64 | macOS | x64 |
| tt-lang-darwin-arm64 | macOS | arm64 |
| ttlang-native-msvc | Windows | x64 (MSVC) |
On other platforms, build from source
(cargo install --git https://github.com/load28/tt) and set the
TTC_BINARY environment variable to the resulting binary.
API
The package exports one helper for tools that want to spawn the compiler directly:
const { binaryPath } = require("tt-lang");
binaryPath(); // absolute path to the ttc binary for this platformLocal development install
In a checkout of the tt repository,
./scripts/setup stamps this directory for local installs. A project can
then use the work-in-progress compiler like any other dependency:
pnpm add -D file:/path/to/tt/npm/tt-langThe launcher runs the repository's target/release/ttc and, when setup was
pointed at a typescript-go checkout, hands that toolchain to the spawned
compiler process only — your shell environment is never modified. Published
installs are unaffected (the stamp file is not committed or published).
Documentation
Language reference, CLI options, standard library and error index: https://github.com/load28/tt#readme.
License
MIT
