TypeScript 编译器 API 提供了对 TypeScript 编译器的编程访问,使开发人员能够在自己的应用程序中解析、分析、转换和生成 TypeScript 代码。此 API 对于构建开发工具、代码分析器、转译器以及其他与 TypeScript 代码交互的语言服务特别有用。
有关提供编辑器特定功能(如代码补全和重构)的 TypeScript 语言服务的信息,请参阅语言服务。
TypeScript 编译器 API 公开了 TypeScript 编译器的内部组件,允许你与编译过程的每个阶段进行交互
编译器 API 提供了对以下内容的访问:
来源: src/compiler/types.ts13-1197 src/compiler/parser.ts1-574 src/compiler/binder.ts1-200 src/compiler/checker.ts1-300 src/compiler/emitter.ts1-100
来源: src/compiler/types.ts800-1100 src/compiler/program.ts327-500 src/services/services.ts363-489
Program 是 TypeScript 编译器的核心对象。它代表一个完整的编译单元,由多个源文件、编译器选项和类型检查上下文组成。
来源: src/compiler/program.ts327-380 tests/baselines/reference/api/typescript.d.ts3000-3100
SourceFile 代表一个单独的 TypeScript 源文件,并作为该文件的 AST 根节点。
来源: src/compiler/types.ts800-850
TypeScript AST 中的所有语法元素都由 Node 对象表示。每个节点都有一个 kind 属性,用于标识其所代表的语法元素类型。
来源: src/compiler/types.ts40-490 src/services/services.ts363-493
TypeChecker 提供了用于 AST 类型检查和语义分析的方法。
来源: src/compiler/checker.ts1-100 tests/baselines/reference/api/typescript.d.ts3200-3300
Symbol 和 Type 接口表示 TypeScript 程序中的标识符及其类型。
来源: src/services/services.ts655-794 src/compiler/types.ts1080-1100
使用编译器 API 的入口点通常是创建 Program 对象。有两种主要方法可以实现这一点:
来源: src/compiler/program.ts327-380
一旦你有了 Program 对象,就可以访问其源文件并遍历 AST。
来源: src/compiler/parser.ts439-490
TypeChecker 提供了用于类型分析的方法
来源: src/compiler/checker.ts100-200
你可以从编译器中获取诊断信息
来源: src/compiler/diagnosticMessages.json1-100
Program 提供了生成 JavaScript 代码、声明文件和源映射的方法
来源: src/compiler/emitter.ts446-513
转换器允许你在代码生成之前修改 AST。以下是创建转换器的基本模式:
来源: src/compiler/transformationRunner.ts
为了更精细地控制编译过程,你可以创建一个自定义的 CompilerHost
来源: src/compiler/program.ts400-500
你可以从字符串创建源文件,而无需从文件系统中读取
来源: src/compiler/parser.ts100-200
为了获得更好的性能,对于需要频繁更新程序的工具而言
来源: src/compiler/program.ts300-400
TypeScript 编译器 API 提供了强大的功能,可用于以编程方式处理 TypeScript 代码。它允许你解析 TypeScript 代码、分析其结构、执行类型检查、应用转换并生成 JavaScript 输出。此 API 对于构建开发工具、linter 工具、代码生成器以及其他需要深入理解 TypeScript 代码的实用工具尤其有用。
该 API 的关键组件包括:
Program - 管理编译上下文SourceFile - 代表 TypeScript 源文件Node - 代表抽象语法树中的元素TypeChecker - 执行类型分析Symbol 和 Type - 代表标识符及其类型通过结合使用这些组件,你可以构建复杂的工具,充分利用 TypeScript 强大的类型系统和语言特性。
来源: src/compiler/types.ts src/compiler/program.ts src/compiler/parser.ts src/compiler/checker.ts src/compiler/emitter.ts