编写 TypeScript 转换器时如何安全遍历、替换并保留语法节点 | 前端进阶之旅