如何使用 Typescript AST 创建带有初始化器的导出常量?
How to create exported constant with initializer using Typescript AST?
简要说明:
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没用。
我认为您没有为您要实现的目标创建正确的节点。 属性 签名节点作为接口的一部分创建。例如,这将创建一个 属性 签名:
declare interface T {
prop: number // props signature for node
}
如果要创建导出变量,则需要创建带有声明列表的变量语句。
ts.createVariableStatement(ts.createModifiersFromModifierFlags(ts.ModifierFlags.Export),
ts.createVariableDeclarationList([
ts.createVariableDeclaration("abc", undefined, ts.createLiteral(5))
]))
注意 我怎么知道的?很简单,有一个 AST 可视化器可以帮助你找出一段代码生成了哪些节点。 See here
简要说明:
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没用。
我认为您没有为您要实现的目标创建正确的节点。 属性 签名节点作为接口的一部分创建。例如,这将创建一个 属性 签名:
declare interface T {
prop: number // props signature for node
}
如果要创建导出变量,则需要创建带有声明列表的变量语句。
ts.createVariableStatement(ts.createModifiersFromModifierFlags(ts.ModifierFlags.Export),
ts.createVariableDeclarationList([
ts.createVariableDeclaration("abc", undefined, ts.createLiteral(5))
]))
注意 我怎么知道的?很简单,有一个 AST 可视化器可以帮助你找出一段代码生成了哪些节点。 See here