如何使用Typescript编译器API获取导出的成员

时间:2019-07-12 03:20:29

标签: typescript typescript-compiler-api

我正在研究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,它将无法正常工作。

那我该怎么办?

2 个答案:

答案 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);