【发布时间】:2021-05-27 23:21:02
【问题描述】:
我正在尝试为项目生成一些类型声明。 这里的主要思想是,我已经到了能够生成类似这样的东西的地步:
type T = typeof import("somepath").default
default 是一个函数。
执行此操作的代码是:
ts.createTypeAliasDeclaration(
undefined,
undefined,
ts.createIdentifier("T"),
undefined,
ts.createTypeOf(
ts.createPropertyAccess(
ts.createCall(
ts.createToken(ts.SyntaxKind.ImportKeyword),
undefined,
[ts.createStringLiteral("somepath")]
),
ts.createIdentifier("default"))
),
undefined,
true
);
将其打印到控制台后,我可以看到它的输出确实是:
type T = typeof import("somepath").default
现在我有一个变量,比如t,它包含该类型别名声明的节点,但是当我尝试使用类型检查器提取类型时,我不断得到any。
到目前为止,我已经尝试过checker.getTypeAtLocation 和checker.getTypeFromTypeNode,但无论我尝试什么,我都会不断收到any(我手动检查,vscode 确实可以验证类型不是any)。
任何帮助将不胜感激, 谢谢!
【问题讨论】:
标签: typescript typescript-compiler-api