【问题标题】:typscript compile API - change variable name打字稿编译器 API - 更改变量名
【发布时间】:2021-05-14 00:11:19
【问题描述】:

我认为这很简单,只需更新一个变量名。我发现的所有博客/帖子都在添加/删除节点。我只是想更新一个变量名并输出SourceFile

而且我不想使用 ts-morph。

我有我的节点(在本例中为 NodeObject)但正在调用...

node.name.text = "testing";

产量Cannot set property text of #<IdentifierObject> which has only a getter

这可能吗?我必须使用转换吗?如果是这样,一个带有标识符名称更改的示例的链接将不胜感激。

【问题讨论】:

    标签: typescript typescript-compiler-api


    【解决方案1】:

    我以为这很简单,只需更新一个变量名。

    这就是 ts-morph 存在的原因。使用编译器 API,您需要编写大量代码来执行此操作,但使用 ts-morph,您只需执行 ident.replaceWithText("newName") 或使用语言服务重命名使用 ident.rename("newName")

    要仅更改变量声明的名称标识符,请使用转换 API,然后将 AST 重新打印为字符串。因此,在较低级别上,使用提供现有变量声明的factory.updateVariableDeclaration 函数,然后使用factory.createIdentifier("yourNewIdentifierName") 作为name 参数。然后,使用打印机 API 将其打印为字符串(请参阅ts.createPrinter())。

    如果您希望重命名变量声明及其所有用法,那么这可以通过语言服务实现。首先编写所有代码设置语言服务,然后使用findRenameLocations方法获取所有重命名位置,并使用结果对文本进行原地修改。

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 2019-07-12
      • 2017-12-16
      • 2019-02-27
      • 2020-04-07
      • 1970-01-01
      • 2017-01-02
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多