Typescript compiler api Typescript编译器,如何按名称获取导出的符号?

Typescript compiler api Typescript编译器,如何按名称获取导出的符号?,typescript-compiler-api,Typescript Compiler Api,按名称获取导出符号的最佳方法是什么 下面是功能代码。但是,它看起来确实有点脆弱,因为如果不忽略类型系统,我无法从“sourceFile”中获取“symbol” const sourceFile=tsprogram.getSourceFile('foo_file.ts'); const fileSymbol=(sourceFile as any).symbol as ts.symbol;//还有比她更好的吗? const export=fileSymbol.exports.get('FooComp

按名称获取导出符号的最佳方法是什么

下面是功能代码。但是,它看起来确实有点脆弱,因为如果不忽略类型系统,我无法从“sourceFile”中获取“symbol”

const sourceFile=tsprogram.getSourceFile('foo_file.ts');
const fileSymbol=(sourceFile as any).symbol as ts.symbol;//还有比她更好的吗?
const export=fileSymbol.exports.get('FooComponent');
使用类型检查器:

const fileSymbol = tsprogram.getTypeChecker().getSymbolAtLocation(sourceFile);
const fooComponentSymbol = fileSymbol?.exports.get('FooComponent');

请注意,当没有文件导出时,
fileSymbol
将是未定义的。

谢谢您的回答!有什么好的来源可以学习typescript编译器api是如何工作的吗?不是真的:(基本上只是…,我主要是通过搜索它的声明文件来找出它:很好!有了对fooComponentSymbol的引用后,还有一个后续问题。当你有
函数Foo(){}.export default Foo
如何从导出导航到实际函数。示例我需要函数的类型并执行typeChecker.GetTypeOfSymbolLocation(fooComponentSymbol,fooComponentSymbol.valueDeclaration);在这种情况下不起作用。@JoseCh。可能最好问一个新问题,这样其他人可以从中受益。我现在就出发,但明天会回答,以防其他人没有。听起来不错。这里:谢谢!