microsoft / microsoft/TypeScript
Add native-preview API for capturing .d.ts emit output
@andrewbranch is already working on this.
Since Jun 24, 2026.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Hey folks, I’ve been experimenting with the native-preview JS API for TS-go API mode, and I’m getting a lot of value from the virtual filesystem callbacks, especially overriding `readFile` for typechecking.
I’m curious whether there are plans to expose declaration emit through this API as well.
Today, as far as I can tell, the JS API can ask for declaration diagnostics, and the CLI can emit `.d.ts` files, but there does not seem to be an API-mode equivalent that lets a JS caller capture emitted `.d.ts` contents while still using the virtual filesystem callbacks.
The use case is an orchestration layer that already supplies source contents through `readFile` callbacks. I want to extend this system to capture generated declaration text for storage/caching without writing to the real filesystem.
Concretely, I’m wondering whether an API roughly like this would be in scope:
```ts
const emittedFiles = new Map();
const api = new API({
fs: {
readFile: (filePath) => {
// Optionally provide source contents from a virtual FS.
},
writeFile: (filePath, content) => {
emittedFiles.set(filePath, content);
},
},
});
await api.emit({
project: "/path/to/tsconfig.json",
fileName: "foo.ts", // optional: omit for whole project
emitOnly: "dts",
compilerOptions: {
declaration: true,
emitDeclarationOnly: true,
noCheck: true,
declarationMap: false,
},
});
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.