Hur genererar man programmässigt en TypeScript-deklarationsfil som bara innehåller typer som används i indatafilen och dess importeringar?


Jag vill använda ChatGPT för att generera kod, men det är svårt att ge nödvändig kontext när man arbetar i stora kodbaser. Jag arbetar i Typescript och jag skulle vilja hitta ett arbetsflöde där jag snabbt kan ge relevanta typer i prompten för att ge den tillräcklig kontext.

Finns det ett programmeringsmässigt sätt att generera en Typescript-deklarationsfil som inkluderar alla typer som används i en given Typescript-fil och dess importerade moduler?

  • Anta att du arbetar i ett befintligt projekt med andra filer som kanske är relevanta eller inte.
  • Den resulterande filen bör använda tree shaking för att endast inkludera relevanta typer för att minimera kontext.
  • Det bör generera en enda fil (lättare att ge ChatGPT i en prompt) som inkluderar typerna av filen och filens beroenden, inklusive de i node_modules

Svar #1

Det verkar som att du letar efter https://api-extractor.com/

Det är motsvarigheten till Webpack men för typdefinitioner

Kontrollera utdataexempel på https://api-extractor.com/pages/overview/demo_rollup/

Svar #2

tsc MyFile.ts --declaration --emitDeclarationOnly --outFile out.d.ts

Detta kommer att rekursivt skanna alla importeringar från MyFile.ts och alla dess importerade filer. Och skriva ut alla deklarationer i out.d.ts.

Alternativt kan du redigera tsconfig.json eller skapa en ny som endast har en fil inkluderad som "files": [ "./main.ts" ] och sedan använda kommandot

tsc -project tsconfig.alldts.json  --declaration --emitDeclarationOnly --outFile all.d.ts

Denna metod är bättre eftersom specifika andra inställningar inte behöver anges varje gång. (t.ex. strikthetsinställningar som påverkar hur null/undefined-typer hanteras).

(Denna metod kan också användas för att generera .js-filer som endast inkluderar main.ts eller någon annan fil i din app.)