使用TypeScript抽象语法树时,如何确定TypeScript.Expression对象的结果类型?
我正在使用TSLint并尝试查找不传递Function类型的对象作为第一个参数的setTimeout的调用。例如,在下面的代码中,我想知道调用了setTimeout并且第一个参数是一个函数。
// function that produces a function
var createFunction : () => (() => void) = () => {};
// result of createFunction() should be of type function
setTimeout(createFunction());
AST排队如下:
我尝试使用LanguageService来确定Expression的类型,但以下API都不能满足我的需要:
有什么想法吗?
答案 0 :(得分:2)
语言服务本身并不公开这些信息。
您可以使用类型检查器执行此操作。从program
获得createProgram
对象后,请写:
let typeChecker = program.getTypeChecker();
let type = typeChecker.getTypeAtLocation(node);