编写 TypeScript 转换器时如何安全遍历、替换并保留语法节点
简答题困难850 次浏览
参考答案与解析
# 核心结论
编写 TypeScript 转换器时,应使用访问者模式遍历语法树,只替换能够被准确识别的节点,并通过转换上下文提供的节点工厂创建或更新节点。对子节点的递归处理通常交给 visitEachChild;更新已有节点时优先使用对应的 update 方法,因为当字段没有变化时,它可以复用原节点,也更符合编译器维护节点结构的方式。不能把语法树转换当作普通字符串替换,更不应直接修改节点内部字段。
import ts from "typescript";
export function transformer(): ts.TransformerFactory<ts.SourceFile> {
r
