恪愚 2023-03-17 20:01 采纳率: 14.3%
浏览 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日