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

PakketBeschrijving
packages/tsc-tsDe compiler, geschreven in TypeScript, inclusief de tsc-ts command line en --api server.
packages/tsgoReferentie-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):

OnderdeelVergelijking met tsgoStatus
Scannertokens, waarden, fouten, rescans, JSDocalle bestanden komen overeen
Parser en ASTboom, diagnostics, API source file encodingalle eenheden komen overeen
Bindersymbolen, tabellen, flow graph, naamsresolutiealle eenheden komen overeen
Module resolutionresultaten, package ID's, --traceResolutionalle verzoeken komen overeen
tsconfig.json en programma's--showConfig, --listFilesOnly, --explainFilesalle gevallen komen overeen
Command line en optiesoutput, fouten, exit codes, --localealle gevallen komen overeen
Diagnostics catalogberichten, 13 vertalingen, output formatsalle komen overeen
JavaScript emitgegenereerde bestanden, 39 optiesetsalle vergeleken eenheden komen overeen
Declaration emit.d.ts en .d.ts.map output, declaratiefoutenalle eenheden komen overeen
--build, --incrementaloutput, .tsbuildinfo, gegenereerde bestanden, --watchalle scenario's komen overeen
Type checkerdiagnostics per bestandalle 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.