2016-01-21 70 views
0

this question的答案作为参考。什么是Node以及如何从Program获得Node的实例。什么是打字稿中的“节点”(使用TypeChecker)

的问题的答案上面使用的这个例子中,在一个位置要获得类型的信息(这是我想怎样做)

let typeChecker = program.getTypeChecker(); 
let type = typeChecker.getTypeAtLocation(node); 

现在,我只是缺少最后一块的难题。什么是对象的Node我会传入getTypeAtLocation以及如何获得Node的实例。

回答

1

你可以得到源文件你感兴趣的处理,像这样的顶级节点:

const root = program.getSourceFile(fileName); 

或者,如果要处理一大堆:

const roots = program.getSourceFiles(); 

然后你可以递归遍历树:

processNode(root); 

function processNode(node: ts.Node) { 
    // process this node 
    // .... 

    // go further down the tree 
    ts.forEachChild(node, child => processNode(child)); 
} 

有了,你应该能够使用的喜欢和TypeChecker.getTypeAtLocation()为您的其他问题设计解决方案。

如果您不需要修改您打算处理的源文件,那么编写custom tslint rule可能会更容易。