【发布时间】:2019-02-23 04:17:53
【问题描述】:
我有一个 TypeScript 代码生成场景,我在其中构造了一个 AST,然后将其打印并保存到一个文件中。默认情况下,打印的字符串文字用双引号括起来,我想要一个带有单引号的选项。正如here 所提到的,我应该能够遍历树并替换字符串文字,但我不确定如何。
export const quotemarkTransformer = <T extends ts.Node>(context: ts.TransformationContext) => (rootNode: T) => {
function visit(node: ts.Node): ts.Node {
node = ts.visitEachChild(node, visit, context);
if (node.kind === ts.SyntaxKind.StringLiteral) {
const stringLiteral = node as ts.StringLiteral;
// change raw node text?
return ts.createLiteral(stringLiteral.text);
}
return node;
}
return ts.visitNode(rootNode, visit);
}
使用 TS 工厂函数 ts.createLiteral(stringLiteral.text) 创建字符串文字将始终使用双引号。有什么方法可以直接访问和更改发出的文本?
【问题讨论】:
标签: typescript typescript2.0 typescript-compiler-api