gpt4 book ai didi

TypeScript 编译器 API : find which file a type came from

转载 作者:行者123 更新时间:2023-12-04 04:22:55 26 4
gpt4 key购买 nike

给定一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com