コンパイラAPIへの簡単なアクセス

TypeScript VFSを使用すると、完全に制御された自己完結型のTypeScript環境を作成できます。このライブラリはプレイグラウンドを支えるために使用されており、twoslashコードサンプルの基盤となるツールを提供します。

TypeScript VFSには、主に3つの用途があります

  • コンパイラAPIへのエントリポイントとしてTypeScriptプログラムを作成する
  • TypeScriptを実行して、*.js*.d.ts、または*.mapなどのファイルを出力する
  • TypeScriptの言語サービスを使用して、エディターが行うのと同じ呼び出しを行う

TypeScript VFS READMEで詳細を確認できます

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')