2016-01-21 54 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可能會更容易。