如何使用Typescript编译器API生成全局属性访问表达式?

时间:2019-03-17 21:05:40

标签: typescript typescript-compiler-api

我正在尝试使用compiler api生成一些打字稿代码。不幸的是,正式的(或任何与此相关的)文件稀疏,而我现在完全停留在一个非常简单的任务上:

我想生成一个简单的函数调用,例如foo()。仅此而已,一个简单的全局函数调用。

经过长时间的搜索,我走了这么远:

import ts from 'typescript'

ts.createCall(
    ts.createPropertyAccess(
        *some expression*,
        'foo'
    ),
    undefined, //generics
    [], //parameters
);

据我了解,我需要将一个表达式传递给createPropertyAccess才能成为所访问属性的“所有者”(例如foo中的foo.bar)。但是,在这种情况下,由于函数位于全局范围内,因此没有“所有者”。

是否有生成这种函数调用的方法?我尝试使用ts.createOmittedExpression,但生成了以下代码:

().bar();

1 个答案:

答案 0 :(得分:0)

在这种情况下,您只能使用ts.createIdentifierfoo()中没有属性访问表达式。

const statement = ts.createExpressionStatement(
    ts.createCall(ts.createIdentifier("foo"), undefined, undefined)
);

顺便问一下我的网站ts-ast-viewer。现在将显示将在编辑器中创建代码的编译器API代码。