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

How to get exported members using 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,它不会工作。

那我该怎么办?

直接调用

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