当前位置:  开发笔记 > 编程语言 > 正文

您如何从打字稿AST推断类型?

如何解决《您如何从打字稿AST推断类型?》经验,为你挑选了1个好方法。

我正在使用内置的解析器从源代码生成AST:

const ts = require('typescript')
//...
const ast = ts.createSourceFile(filename, fs.readFileSync(filename).toString(), ts.ScriptTarget.ES6, true)

有没有办法从AST中获取变量的推断类型?例如,在下面的代码中,bar类型为IBar。编译器知道该类型- bar.foo()不编译-我如何以编程方式获取该类型?

interface IBar { bar() } 
const foo : IBar = //...
export const bar = foo

basarat.. 5

编译器知道该类型--- bar.foo()无法编译---如何以编程方式获取类型?

AST不是TypeChecking 的完整故事。您需要一个TypeChecker

最简单的解决方案是创建一个程序(某些文档https://basarat.gitbooks.io/typescript/content/docs/compiler/program.html)然后使用program.getTypeChecker(更多文档https://basarat.gitbooks.io/typescript /content/docs/compiler/checker.html)



1> basarat..:

编译器知道该类型--- bar.foo()无法编译---如何以编程方式获取类型?

AST不是TypeChecking 的完整故事。您需要一个TypeChecker

最简单的解决方案是创建一个程序(某些文档https://basarat.gitbooks.io/typescript/content/docs/compiler/program.html)然后使用program.getTypeChecker(更多文档https://basarat.gitbooks.io/typescript /content/docs/compiler/checker.html)

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有