【发布时间】:2022-02-12 03:34:05
【问题描述】:
假设我有以下代码:
import { createConnection } from "mysql";
const connection = createConnection({
host: "localhost",
user: "admin",
database: "project",
password: "mypassword", // sensitive
multipleStatements: true,
});
根据Using the Compiler API,可以使用 TypeChecker 来推断例如的类型。 createConnection(在这种情况下,这将是“连接”)。
我很感兴趣的是 TypeChecker 是否可以告诉我们它获取类型的文件的模块名称(第 1 行中定义的“mysql”)。
我可以使用以下方法推断文件名:
typeProgram?.checker.getTypeAtLocation(node).type.symbol.valueDeclaration.parent.fileName
在这种情况下会返回:
"/Users/USERNAME/git/eslint-plugin-security-rules/node_modules/@types/mysql/index.d.ts"
从这里,我可以遍历文件名来获取模块名称,这是目前我解决问题的最佳解决方案。但是,我很想知道是否有我忽略的函数或变量?
【问题讨论】:
标签: typescript types typescript-compiler-api