gpt4 book ai didi

typescript - 不使用 ts.createProgram 创建 Typescript TypeChecker?

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:41 24 4
gpt4 key购买 nike

我正在使用 typescript 库进行一些反射(reflection)。我主要使用 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 函数中,您可以访问公开 TypeChecker 信息的 NodeObject 节点:

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

关于typescript - 不使用 ts.createProgram 创建 Typescript TypeChecker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40073701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com