如何使用Typescript编译器API获取导出的成员
我正在工作 这是Typescript编译器API加载的文件:如何使用Typescript编译器API获取导出的成员,typescript,typescript-compiler-api,Typescript,Typescript Compiler Api,我正在工作 这是Typescript编译器API加载的文件: 将*作为fs从“fs”导入 这是我的代码: 函数getExportList(节点:ts.标识符,检查器:ts.类型检查器){ const symbol=checker.getSymbolLocation(节点) 返回检查器.getExportsOfModule(符号) } 正在尝试获取导出的fs成员 我知道符号不是ts.ModuleSymbol,它不会工作 那我该怎么办呢?简单地说就是了 this.fs.getExportLi
将*作为fs从“fs”导入
这是我的代码:
函数getExportList(节点:ts.标识符,检查器:ts.类型检查器){
const symbol=checker.getSymbolLocation(节点)
返回检查器.getExportsOfModule(符号)
}
正在尝试获取导出的fs
成员
我知道符号
不是ts.ModuleSymbol
,它不会工作
那我该怎么办呢?简单地说就是了
this.fs.getExportList(urIdentifier,urTypeChecker)
您需要从本地
fs
符号中获取别名符号
const localFsSymbol = typeChecker.getSymbolAtLocation(node)!; // todo: handle when undefined
const fsSymbol = typeChecker.getAliasedSymbol(localFsSymbol);
const moduleExports = typeChecker.getExportsOfModule(fsSymbol);
// this prints out ["rename", "renameSync", "truncate", ...etc...]
console.log(moduleExports.map(s => s.name));
如果这不起作用,则确保程序中没有诊断:
const diagnostics = ts.getPreEmitDiagnostics(program);
console.log(diagnostics);
有帮助吗?建议以后用typescript编译器api标记这些,因为您会得到更快的响应。对不起,我之前没有说清楚。
fs
和getExportList
不在同一个文件中。这两个文件位于同一个位置,非常感谢。这困扰了我好几个星期:)@David node(传递到getSymbol func中)的可能值是什么?