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

时间:2016-10-16 18:13:07

标签: typescript typescript2.0 typescript-compiler-api

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

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

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

1 个答案:

答案 0 :(得分:-1)

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

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

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

function visitNode(node: NodeObect) {    
  recognize(node);
  node.getChildren().forEach(c => visitNode(c));
}