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

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

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

最佳答案

您可以像这样使用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));
}

09-19 19:29