microsoft / microsoft/TypeScript

Add native-preview API for capturing .d.ts emit output

Open
#63,843 3 comments 0 reactions 1 assignee View on GitHub

@andrewbranch is already working on this.

Since Jun 24, 2026.

API Request
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.