Я начал экспериментировать с компилятором Typescript, особенно с использованием оболочки ts-morph
. В настоящее время я пытаюсь пройти через AST исходного файла, чтобы вывести определенные виды узлов и их свойства, и заметил, по крайней мере, три возможности прохождения соответствующего AST, которые все дают разные результаты:
SourceFile.getChildSyntaxListOrThrow().getChildren().forEach(...)
в сочетании с рекурсивным node.getChildren().forEach(...)
вызовом, который, по-видимому, является единственным подходом для получения пустяков и комментариев. SourceFile.getChildren().forEach(...)
sans .getChildSyntaxListOrThrow()
SourceFile.forEachDescendant(...)
без необходимостивызвать обработчик visitNode
для дочернего узла SourceFile.forEachChild(...)
, который не дает ключевых слов
К сожалению, я не могу понять точную разницу, чтобы полностью понять, какой подход лучше всего в какомкейс. Итак, вопрос в том, «какой подход к обходу через Typescript AST дает что?»