网站搜索

typescript - 语言服务:查找指定位置的节点


我正在使用 Typescript 语言服务。

我需要找到一个 ts.Node,输入参数仅有一个 ts.SourceFile 实例和一个感兴趣的绝对位置(数字)。

此外,我还需要处理当感兴趣的标记是 else 关键字,例如,或者是一个左大括号 {,或者位于 if 条件内部的情况。

有人知道语言服务中是否已经存在这样的功能吗?

更新:我设法在某处 TypeScript 源代码中找到了函数 getTouchingToken(它大概能满足我的需求),但我没有看到它被导出。有人知道如何重用它吗?

答案#1

我设法在 TypeScript 源代码中的某处找到了函数 getTouchingToken(它可能正好是我需要的),但我没有看到它被导出。有什么线索可以告诉我如何重用它吗

我使用 ts.getTokenAtPosition,例如在 alm 工具中为 TypeScript 提供快速修复功能 🌹

答案#2

你可以使用 tsutils,它包含 getTokenAtPosition。

这比依赖可能随时会中断的内部 TypeScript API 要好。