我正在尝试使用compiler api生成一些打字稿代码。不幸的是,正式的(或任何与此相关的)文件稀疏,而我现在完全停留在一个非常简单的任务上:
我想生成一个简单的函数调用,例如foo()
。仅此而已,一个简单的全局函数调用。
经过长时间的搜索,我走了这么远:
import ts from 'typescript'
ts.createCall(
ts.createPropertyAccess(
*some expression*,
'foo'
),
undefined, //generics
[], //parameters
);
据我了解,我需要将一个表达式传递给createPropertyAccess
才能成为所访问属性的“所有者”(例如foo
中的foo.bar
)。但是,在这种情况下,由于函数位于全局范围内,因此没有“所有者”。
是否有生成这种函数调用的方法?我尝试使用ts.createOmittedExpression
,但生成了以下代码:
().bar();
答案 0 :(得分:0)
在这种情况下,您只能使用ts.createIdentifier
。 foo()
中没有属性访问表达式。
const statement = ts.createExpressionStatement(
ts.createCall(ts.createIdentifier("foo"), undefined, undefined)
);
顺便问一下我的网站ts-ast-viewer。现在将显示将在编辑器中创建代码的编译器API代码。