在不使用ts.createProgram的情况下创建Typescript TypeChecker?

Mei*_*hes 7 typescript typescript2.0 typescript-compiler-api

我正在使用typescript库做一些反思.首先,我正在使用ts.createSourceFile并传递存储在内存中的文件.这非常有效,我可以轻松地在节点中移动以匹配绑定语法(在html文件中)与ViewModels(typescript)以确保访问良好.

我的问题是我想现在使用生成的ts.SourceFile对象进行一些基本的类型检查.到目前为止,我只能跟踪TypeChecker回到Program课程的界面.不幸的是,ts.createProgram获取文件的路径,而我想传递SourceFile我已经拥有的集合.

有没有办法让我使用ts.SourceFile我已有的对象进行类型检查?我真正需要知道的是,如果右侧可以分配给左侧,那么我有两个类型节点.

Was*_*ham -6

ts.createSourceFile()你可以像这样使用:

let sourceCode = fs.readFileSync(commander.file);
let sourceFile = ts.createSourceFile(commander.file, sourceCode.toString(), ts.ScriptTarget.ES2015, true);
visitNode(sourceFile);
Run Code Online (Sandbox Code Playgroud)

然后在visitNode函数中,您可以访问NodeObject公开TypeChecker信息的节点:

function visitNode(node: NodeObect) {    
  recognize(node);
  node.getChildren().forEach(c => visitNode(c));
}
Run Code Online (Sandbox Code Playgroud)