轻松访问编译器 API

TypeScript VFS 允许您创建完全受您控制的自包含 TypeScript 环境。该库用于为游乐场提供支持,并为 twoslash 代码示例提供底层工具。

TypeScript VFS 有 3 个主要用途

  • 创建 TypeScript 程序作为编译器 API 的入口点
  • 运行 TypeScript 以生成文件,例如 *.js*.d.ts*.map
  • 使用 TypeScript 的语言服务来执行编辑器会执行的相同调用

您可以在 TypeScript VFS 自述文件 中了解更多信息

使用 node_modules 中的 TypeScript 进行设置

import ts from 'typescript'
import tsvfs from '@typescript/vfs'

const fsMap = tsvfs.createDefaultMapFromNodeModules({ target: ts.ScriptTarget.ES2015 })
fsMap.set('index.ts', 'console.log("Hello World")')

// ....
              

使用 TypeScript CDN 获取您的 lib.d.ts 文件

import ts from 'typescript'
import tsvfs from '@typescript/vfs'

const fsMap = await tsvfs.createDefaultMapFromCDN(compilerOptions, ts.version, true, ts)
fsMap.set('index.ts', 'console.log("Hello World")')

const system = tsvfs.createSystem(fsMap)
const host = tsvfs.createVirtualCompilerHost(system, compilerOptions, ts)

const program = ts.createProgram({
  rootNames: [...fsMap.keys()],
  options: compilerOptions,
  host: host.compilerHost,
})

// This will update the fsMap with new files
// for the .d.ts and .js files
program.emit()

// Now I can look at the AST for the .ts file too
const index = program.getSourceFile('index.ts')