不使用 ts.createProgram 创建 Typescript TypeChecker?

问题描述 投票:0回答:1

我正在使用打字稿库进行一些反思。主要是,我使用

ts.createSourceFile
并传递存储在内存中的文件。这工作得非常好,我可以轻松地移动节点,将绑定语法(在 html 文件中)与 ViewModel(打字稿)相匹配,以确保访问良好。

我的问题是我现在想对我拥有的结果 ts.SourceFile 对象进行一些基本类型检查。到目前为止,我只能将

TypeChecker
接口跟踪回
Program
类。不幸的是,
ts.createProgram
采用文件路径,而我想传递我已有的
SourceFile
集合。

有没有办法使用我已有的

ts.SourceFile
对象进行类型检查?我真正需要知道的是右侧是否可以分配给左侧,其中我有两个类型节点。

typescript typescript2.0 typescript-compiler-api
1个回答
-6
投票

你可以像这样使用

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));
}
© www.soinside.com 2019 - 2024. All rights reserved.