作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个 ts.Program
和类型的名称,是否可以找到该类型来自哪个文件?被查询的类型将始终存在于程序中,并将从主入口点导出。
我在这里不一定需要特定的代码,只需要从哪些 API 开始或类似的示例。使用 program.getTypeChecker()
得到一个 ts.TypeChecker
可能是相关的,但它的任何方法似乎都没有提供一种明显的方法来从类型名称到可以告诉类型定义位置的东西。
(VS Code“转到定义”在概念上是相似的,但代码贯穿了几个抽象层,并不是一个有用的例子。)
最佳答案
您可以从给定的类型中获取符号,并从符号中获取声明。从符号的声明中,您可以获得该类型来自的所有源文件(例如,声明合并可能导致一个类型具有多个声明,而这些声明可能存在于另一个文件中)。
这是一些示例代码(未经测试,但我认为它会起作用):
const symbol = type.getSymbol()!; // todo: you should handle for when undefined
const declarations = type.declarations;
const sourceFiles = Array.from(new HashSet(declarations.map(d => d.getSourceFile()));
关于TypeScript 编译器 API : find which file a type came from,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58653091/
我是一名优秀的程序员,十分优秀!