我正在研究https://github.com/GooGee/Code-Builder
这是Typescript编译器API加载的文件:
import * as fs from 'fs'
这是我的代码:
function getExportList(node: ts.Identifier, checker: ts.TypeChecker) {
const symbol = checker.getSymbolAtLocation(node)
return checker.getExportsOfModule(symbol)
}
尝试获取fs
的导出成员。
我知道symbol
不是ts.ModuleSymbol
,它将无法正常工作。
那我该怎么办?
答案 0 :(得分:0)
简单地调用
this.fs.getExportList(urIdentifier,urTypeChecker)
答案 1 :(得分:0)
您将需要从本地的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);