árbol de sintaxis abstracta - ¿Qué enfoques al recorrer un AST de TypeScript producen qué?
Comencé a experimentar con el compilador de Typescript, especialmente usando el envoltorio ts-morph. Actualmente estoy intentando recorrer el AST de un archivo fuente para deducir ciertos tipos de nodos y sus propiedades, y noté al menos tres posibilidades para recorrer el AST respectivo, las cuales producen resultados diferentes:
SourceFile.getChildSyntaxListOrThrow().getChildren().forEach(...)en combinación con la llamada recursivanode.getChildren().forEach(...), que aparentemente es el único enfoque para obtener también trivia y comentarios.SourceFile.getChildren().forEach(...)sin.getChildSyntaxListOrThrow()SourceFile.forEachDescendant(...)sin la necesidad de llamar a un manejadorvisitNodepara el nodo hijoSourceFile.forEachChild(...)que no produce palabras clave
Desafortunadamente, no parece que pueda entender la diferencia exacta para determinar completamente qué enfoque es mejor en cada caso. Entonces, la pregunta es: "¿qué resultados producen los enfoques que recorren un AST de Typescript?"