TypeScript API 对修改后的源文件进行类型检查

TypeScript API type checking on modified source file

期望的解决方案

我正在寻找对 SourceFile 修改后的 AST 进行 类型检查 的最有效方法。

不需要的解决方案

想serialize/emit修改SourceFile的AST到文本,然后将文本解析回新的SourceFile.


我知道 BuilderProgram 可用于逐步构建 Program [1]。但是,除了处理文本范围更改外,我还没有看到任何更新 SourceFile 的方法。这似乎非常耗费资源,因为我已经准备好实际修改的 AST。

编译器API文档

https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API


[1] https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#writing-an-incremental-program-watcher

查看我的回答

TypeScript 编译器不是为这种情况设计的。类型检查发生在转换之前,因此类型检查器通常假定源文件文本与 AST 同步。这可能会在未来发生变化,但这是目前的情况。

所以为了代码的可靠性,必须针对AST的当前状态获取对应的源文件文本。不幸的是,最简单的方法是使用打印机 (ts.createPrinter) 打印出 AST 的最终状态然后重新解析源文件的不受欢迎的解决方案。