我对如何将Typescript解析为AST有疑问。我的目标是能够计算导入和类声明之间有多少个断行。
我认为可以使用每个语句的开始和结束位置来完成它。但是,事实证明,Typescript解析器会忽略断行。
如果图像不够清晰,我会指出babylon解析器中的ClassDeclaration从116开始,而在typescript解析器中从113开始。
我想知道为什么会发生这种情况以及如何使用Typescript解决它或者有什么办法解决这个问题?我正在使用tslint创建自定义规则。
Babylon7 AST Parser https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5f76ca978af53b1/d50f63227dec8549a70d6fbb35d4d1aa62b0ea25
这是预料之中的。 pos
属性显示最后一个重要标记的结束位置。 node.getStart(sourceFile)
方法是您感兴趣的方法,并将返回起始位置。
我建议使用我的ast查看器(ts-ast-viewer),因为它专门用于TypeScript编译器API,并将向您显示此信息。