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函数类似的写法。

求带佬们解答!

参考GPT和自己的思路:

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

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

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

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

参考GPT和自己的思路:

对于当前文件中的代码段,可以使用ts.createSourceFile创建一个ts源文件,并通过创建程序的方式来解析该文件。因此,可以使用以下代码来创建一个程序并获取类型检查器:

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;
}`; 

const sourceFile = ts.createSourceFile('inMemory.ts', tsCode, ts.ScriptTarget.Latest, false);
const program = ts.createProgram(['inMemory.ts'], {});
const checker = program.getTypeChecker();

在这个例子中,我们创建了一个名为"inMemory.ts"的虚拟文件,然后向createProgram函数传递一个包含该文件的数组。最后,我们从程序中获取类型检查器。

createProgram看看这个函数的定义