typescript - 如何使用 Typescript Compiler API 生成全局属性访问表达式?

标签 typescript typescript-compiler-api

我正在尝试使用 compiler api 生成一些 typescript 代码.不幸的是,官方(或任何与此相关的)文档很少,我现在完全陷入了一个非常简单的任务:

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

经过长时间的搜索,我走到了这一步:

import ts from 'typescript'

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

据我所知,我需要将一个表达式传递给 createPropertyAccess 以成为所访问属性的“所有者”(如 foo 中的 foo)。栏)。但是,在这种情况下,没有“所有者”,因为函数驻留在全局范围内。

有没有办法生成这样的函数调用?我尝试使用 ts.createOmittedExpression,但生成了以下代码:

().bar();

最佳答案

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

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

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

关于typescript - 如何使用 Typescript Compiler API 生成全局属性访问表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211931/

相关文章:

typescript - 使用 TypeScript 类型检查器查看两种类型是否可赋值

在使用浏览器的刷新按钮重新加载应用程序之前,Angular 路由器链接不起作用

angular - 错误 ngx-daterangepicker-material 无法在环境上下文中声明访问器

java - TypeScript:向枚举添加更多数据

javascript - 如果文本框值等于单选按钮值,单选按钮将激活

typescript - 有没有办法跳过类型检查以加快 TypeScript 编译速度?

typescript - 在类型检查之前转换 typescript

reactjs - 如何保持 TypeScript 类型干燥

typescript - 如何从引用其他类型别名的类型别名中提取类型参数和类型参数?