我正在使用打字稿库进行一些反思。主要是,我使用
ts.createSourceFile
并传递存储在内存中的文件。这工作得非常好,我可以轻松地移动节点,将绑定语法(在 html 文件中)与 ViewModel(打字稿)相匹配,以确保访问良好。
我的问题是我现在想对我拥有的结果 ts.SourceFile 对象进行一些基本类型检查。到目前为止,我只能将
TypeChecker
接口跟踪回 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));
}