Overzicht van tsc-ts
tsc-ts is een experimentele port van de TypeScript 7.0.2-compiler (gebaseerd op tsgo), die is geschreven in idiomatisch TypeScript en via scriptc is gecompileerd naar native code.
Belangrijkste kenmerken:
- Compatibiliteit: De compiler is uitgebreid vergeleken met
tsgo aan de hand van een corpus van 12.500 bestanden. Componenten zoals de scanner, parser, binder, type checker en JavaScript emit komen volledig overeen.
- API Server: Met
tsc-ts --api wordt een server aangeboden die dezelfde API-functionaliteit biedt als tsc --api van TypeScript 7.0.2, waardoor tools die deze API gebruiken (zoals scriptc) naadloos kunnen overstappen.
- Language Service: De server ondersteunt diverse methoden voor completions, documentatie en symboolreferenties.
- Technische vereisten: Voor build en gebruik zijn Node.js 24+, Go 1.26 en een
scriptc-host (macOS, Linux of Windows) met clang vereist.
Het project wordt beheerd met Turborepo en is gelicentieerd onder de Apache-2.0 licentie.
tsc-ts: TypeScript geschreven in TypeScript
Installatie
Installeer de compiler via npm:
npm install -D tsc-ts
npx tsc-ts -p tsconfig.json
Het tsc-ts-pakket voert een native executable uit vanuit een per platform optionele dependency (bijv. @tsc-ts/darwin-arm64, @tsc-ts/linux-x64-gnu, etc.). Zie packages/tsc-ts voor meer informatie.
Raadpleeg CHANGELOG.md voor de release notes en GitHub Releases voor pakketarchieven.
Om de pakketten voor het huidige platform te bouwen:
npm run pack:npm -w tsc-ts # packages/tsc-ts/dist/npm/*.tgz
npm run pack:npm -w tsc-ts -- --check # installeert ook de tarballs en compileert een project
Het gebruik van -- --binary dist/tsc pakt een bestaande native build in (relatief ten opzichte van packages/tsc-ts) in plaats van er een nieuwe te bouwen.
Pakketten
| Pakket | Beschrijving |
packages/tsc-ts | De compiler, geschreven in TypeScript, inclusief de tsc-ts command line en --api server. |
packages/tsgo | Referentie-builds van tsgo (de command line en per-stage drivers) waartegen de tests worden vergeleken. |
Taken worden uitgevoerd met Turborepo.
Documentatie
De compiler-gidsen van tsc-ts bevinden zich in apps/web.
npm run dev:web
npm run build:web
Vereisten
- Node.js 24+ en npm
- Go 1.26
- Een
scriptc-host: macOS, Linux, of Windows, met clang beschikbaar voor linking
Build
npm ci
npm run fetch:upstream # kloont tsgo op de vastgelegde commit
npm run build # de Node-build van tsc-ts (packages/tsc-ts/dist) en de documentatiewebsite
npm run build:oracle # tsgo referentie-builds in packages/tsgo/dist
De package.json gebruikt specifiek scriptc versie 0.3.5, inclusief het @scriptc/threads pakket. De build zal mislukken bij gebruik van een andere versie.
Compiler
De compiler in packages/tsc-ts/src/compiler is geporteerd vanuit tsgo 7.0.2 als idiomatisch TypeScript. Elk onderdeel is vergeleken met tsgo op basis van het testcorpus van TypeScript (ongeveer 12.500 bestanden, 17.000 eenheden na het splitsen van multi-file cases):
| Onderdeel | Vergelijking met tsgo | Status |
| Scanner | tokens, waarden, fouten, rescans, JSDoc | alle bestanden komen overeen |
| Parser en AST | boom, diagnostics, API source file encoding | alle eenheden komen overeen |
| Binder | symbolen, tabellen, flow graph, naamsresolutie | alle eenheden komen overeen |
| Module resolution | resultaten, package ID's, --traceResolution | alle verzoeken komen overeen |
| tsconfig.json en programma's | --showConfig, --listFilesOnly, --explainFiles | alle gevallen komen overeen |
| Command line en opties | output, fouten, exit codes, --locale | alle gevallen komen overeen |
| Diagnostics catalog | berichten, 13 vertalingen, output formats | alle komen overeen |
| JavaScript emit | gegenereerde bestanden, 39 optiesets | alle vergeleken eenheden komen overeen |
| Declaration emit | .d.ts en .d.ts.map output, declaratiefouten | alle eenheden komen overeen |
| --build, --incremental | output, .tsbuildinfo, gegenereerde bestanden, --watch | alle scenario's komen overeen |
| Type checker | diagnostics per bestand | alle bestanden komen overeen |
De corpus-scripts bevinden zich in packages/tsc-ts/scripts (*-corpus.mjs).
API Server
tsc-ts --api biedt dezelfde API als de tsc --api van TypeScript 7.0.2 via stdin en stdout. Tools die tsc --api aansturen (zoals scriptc) kunnen daarom tsc-ts gebruiken.
npm run build -w tsc-ts
node packages/tsc-ts/dist/tsc-ts/src/main.js --api --cwd pad/naar/project
Native builds lezen lib-bestanden uit de directory van de executable, of vanuit TSCTSLIB_DIR:
npm run build:native -w tsc-ts # packages/tsc-ts/dist/tsc
npm run build:native:dev -w tsc-ts # ongeoptimaliseerd, sneller om te bouwen
TSC_TS_LIB_DIR=upstream/typescript-go/internal/bundled/libs packages/tsc-ts/dist/tsc -p pad/naar/project
TSCTSBIN=packages/tsc-ts/dist/tsc voert de tsc-ts-tests uit die een native build gebruiken.
De server is response-voor-response gecontroleerd tegen tsc --api 7.0.2, en scriptc bouwt met beide versies dezelfde programma's. Het draait op de tsc-ts-compiler, zowel native als onder Node.
De volgende methoden van de language service worden ondersteund:
getCompletionsAtPosition
getJsDocTags
getDocumentationComment
getReferencesToSymbolInFile
getReferencedSymbolsForNode
getSignatureUsages
Net als bij tsc --api rapporteren completions die auto-imports nodig hebben (globale identifiers, import-statements, uitputtende switch-cases) dat de completion-lijst auto-imports vereist. De profiling-methoden (startCPUProfile, stopCPUProfile, saveHeapProfile) worden niet ondersteund.
Testen
npm test # vergelijkt tsc-ts met tsgo
npm run bench -w tsc-ts # meet de tijd van tsc-ts tegenover tsgo en de JavaScript-compiler van TypeScript
npm run lint # oxlint
npm run format # oxfmt
Licentie
Apache-2.0. Zie THIRDPARTYNOTICES.md voor TypeScript-Go en andere notices van derden.
tsc-ts: TypeScript geschreven in TypeScript
Installatie
Installeer de compiler via npm:
npm install -D tsc-ts
npx tsc-ts -p tsconfig.json
Het tsc-ts-pakket voert een native executable uit vanuit een per platform optionele dependency (bijv. @tsc-ts/darwin-arm64, @tsc-ts/linux-x64-gnu, etc.). Zie packages/tsc-ts voor meer informatie.
Raadpleeg CHANGELOG.md voor de release notes en GitHub Releases voor pakketarchieven.
Om de pakketten voor het huidige platform te bouwen:
npm run pack:npm -w tsc-ts # packages/tsc-ts/dist/npm/*.tgz
npm run pack:npm -w tsc-ts -- --check # installeert ook de tarballs en compileert een project
Het gebruik van -- --binary dist/tsc pakt een bestaande native build in (relatief ten opzichte van packages/tsc-ts) in plaats van er een nieuwe te bouwen.
Pakketten
| Pakket | Beschrijving |
packages/tsc-ts | De compiler, geschreven in TypeScript, inclusief de tsc-ts command line en --api server. |
packages/tsgo | Referentie-builds van tsgo (de command line en per-stage drivers) waartegen de tests worden vergeleken. |
Taken worden uitgevoerd met Turborepo.
Documentatie
De compiler-gidsen van tsc-ts bevinden zich in apps/web.
npm run dev:web
npm run build:web
Vereisten
- Node.js 24+ en npm
- Go 1.26
- Een
scriptc-host: macOS, Linux, of Windows, met clang beschikbaar voor linking
Build
npm ci
npm run fetch:upstream # kloont tsgo op de vastgelegde commit
npm run build # de Node-build van tsc-ts (packages/tsc-ts/dist) en de documentatiewebsite
npm run build:oracle # tsgo referentie-builds in packages/tsgo/dist
De package.json gebruikt specifiek scriptc versie 0.3.5, inclusief het @scriptc/threads pakket. De build zal mislukken bij gebruik van een andere versie.
Compiler
De compiler in packages/tsc-ts/src/compiler is geporteerd vanuit tsgo 7.0.2 als idiomatisch TypeScript. Elk onderdeel is vergeleken met tsgo op basis van het testcorpus van TypeScript (ongeveer 12.500 bestanden, 17.000 eenheden na het splitsen van multi-file cases):
| Onderdeel | Vergelijking met tsgo | Status |
| Scanner | tokens, waarden, fouten, rescans, JSDoc | alle bestanden komen overeen |
| Parser en AST | boom, diagnostics, API source file encoding | alle eenheden komen overeen |
| Binder | symbolen, tabellen, flow graph, naamsresolutie | alle eenheden komen overeen |
| Module resolution | resultaten, package ID's, --traceResolution | alle verzoeken komen overeen |
| tsconfig.json en programma's | --showConfig, --listFilesOnly, --explainFiles | alle gevallen komen overeen |
| Command line en opties | output, fouten, exit codes, --locale | alle gevallen komen overeen |
| Diagnostics catalog | berichten, 13 vertalingen, output formats | alle komen overeen |
| JavaScript emit | gegenereerde bestanden, 39 optiesets | alle vergeleken eenheden komen overeen |
| Declaration emit | .d.ts en .d.ts.map output, declaratiefouten | alle eenheden komen overeen |
| --build, --incremental | output, .tsbuildinfo, gegenereerde bestanden, --watch | alle scenario's komen overeen |
| Type checker | diagnostics per bestand | alle bestanden komen overeen |
De corpus-scripts bevinden zich in packages/tsc-ts/scripts (*-corpus.mjs).
API Server
tsc-ts --api biedt dezelfde API als de tsc --api van TypeScript 7.0.2 via stdin en stdout. Tools die tsc --api aansturen (zoals scriptc) kunnen daarom tsc-ts gebruiken.
npm run build -w tsc-ts
node packages/tsc-ts/dist/tsc-ts/src/main.js --api --cwd pad/naar/project
Native builds lezen lib-bestanden uit de directory van de executable, of vanuit TSCTSLIB_DIR:
npm run build:native -w tsc-ts # packages/tsc-ts/dist/tsc
npm run build:native:dev -w tsc-ts # ongeoptimaliseerd, sneller om te bouwen
TSC_TS_LIB_DIR=upstream/typescript-go/internal/bundled/libs packages/tsc-ts/dist/tsc -p pad/naar/project
TSCTSBIN=packages/tsc-ts/dist/tsc voert de tsc-ts-tests uit die een native build gebruiken.
De server is response-voor-response gecontroleerd tegen tsc --api 7.0.2, en scriptc bouwt met beide versies dezelfde programma's. Het draait op de tsc-ts-compiler, zowel native als onder Node.
De volgende methoden van de language service worden ondersteund:
getCompletionsAtPosition
getJsDocTags
getDocumentationComment
getReferencesToSymbolInFile
getReferencedSymbolsForNode
getSignatureUsages
Net als bij tsc --api rapporteren completions die auto-imports nodig hebben (globale identifiers, import-statements, uitputtende switch-cases) dat de completion-lijst auto-imports vereist. De profiling-methoden (startCPUProfile, stopCPUProfile, saveHeapProfile) worden niet ondersteund.
Testen
npm test # vergelijkt tsc-ts met tsgo
npm run bench -w tsc-ts # meet de tijd van tsc-ts tegenover tsgo en de JavaScript-compiler van TypeScript
npm run lint # oxlint
npm run format # oxfmt
Licentie
Apache-2.0. Zie THIRDPARTYNOTICES.md voor TypeScript-Go en andere notices van derden.