如何使用TypeScript API获取节点的所有引用?

时间:2018-02-04 02:50:00

标签: typescript typescript-compiler-api

用例:给定一个变量声明,如let i = 0const j = getSomething();,找出变量是int,float还是其他任何东西(不只是number vs non - {{ 1}})。要做到这一点,我假设一般的方法是找到值设置的所有位置,找出它们的类型(递归),并查看是否有任何设置为int以外的东西。

如果需要,我可以访问numberts.TypeChecker。一些tweets from Daniel Rosenwasser表示检查器API是可行的方法,但我无法确定要使用哪些API。

Relevant GitHub issue& relevant source file

编辑:这不像ts.Program那么简单。假设我们有以下块:

typeChecker.getSymbolAtLocation

我正在尝试抓取一个抓住树的程序,以了解function someScope() { let myInt = 0; let myFloat = 0; for (let i = 0; i < 3; i += 1) { myInt = i; myFloat = i; } if (external) { myInt = 7; } else { myFloat = 7.5; } return myInt * myFloat; } 实际上是myInt(不只是一般int),而number是键入myFloatfloat会返回someScope(不是float)。

“最坏情况”的情况是爬行变量的包含范围,找到对它的所有引用,并递归地获取它们的类型。当然必须有一个标准的方法来做到这一点?

0 个答案:

没有答案