恪愚 2023-03-17 20:01 采纳率: 20%
浏览 13

typescript解析器如何解析非单独文件的ts代码

ts-compiler有一个解析文件内容生成checker的函数:

const program = ts.createProgram([fileName], {})
const checker = program.getTypeChecker();

我想问的是:createProgram能够对当前文件中的代码段处理吗?或者说对当前文件中的代码段有没有和getTypeChecker一样功能的函数?
就像这样:

const tsCode = `import { app } from 'framework';                                

const dataLen = 3;
let name = 'iceman';

if(app){
    console.log(name);
}

function getInfos (info: string) {
    const result = app.get(info);
    return result;
}`; 

获取ast的函数就可以这样:tsCompiler.createSourceFile('xxx', tsCode, ts.ScriptTarget.Latest, true);,但是我没找到createProgram函数类似的写法。

求带佬们解答!

  • 写回答

4条回答 默认 最新

  • lshen01 2023-03-17 20:11
    关注

    参考GPT和自己的思路:

    createProgram函数实际上是针对整个项目的,可以对指定的文件列表进行编译操作,而非单独的文件代码段。

    如果需要对单独的代码段进行解析,可以使用createSourceFile函数创建一个源文件AST节点。例如:

    const sourceFile = ts.createSourceFile('example.ts', tsCode, ts.ScriptTarget.Latest, true);
    

    这样就可以获得这段代码的AST节点,然后可以使用getTypeChecker等函数进行操作和解析。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭