如何使用Typescript AST使用初始化程序创建导出的常量?

时间:2019-02-16 15:48:28

标签: typescript typescript-compiler-api

简而言之:

export const abc = 123;

如何使用AST生成此类表达式?

使用此代码

  return ts.createPropertySignature(
    [ts.createToken(ts.SyntaxKind.ExportKeyword), ts.createToken(ts.SyntaxKind.ConstKeyword)],
    "abc",
    undefined,
    undefined,
    undefined //initializer
  );

我只有

export const abc;

不知道如何制作初始化器。没有文档。 Google没用。

1 个答案:

答案 0 :(得分:2)

我认为您没有为要实现的目标创建正确的节点。属性签名节点被创建为接口的一部分。例如,这将创建一个属性签名:

ts.createVariableStatement(ts.createModifiersFromModifierFlags(ts.ModifierFlags.Export),
    ts.createVariableDeclarationList([
        ts.createVariableDeclaration("abc", undefined, ts.createLiteral(5))
]))

如果要创建导出的变量,则需要创建带有声明列表的变量语句。

>>> search_term ="MG"
>>> my_list = ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
>>> [item.lower() for item in my_list ].index(search_term .lower())
3

注意:我怎么知道的?很简单,有一个AST可视化工具,可以帮助您找出为一段代码生成的节点。 See here