TypeScript 7 的编译器与编辑器工具用 Go 重写,本文只考察其中一部分:AST 的节点模型。要解决的问题很普适——如何表示若干相关的数据形状,又不必把所有可能的字段都塞进一个大结构体、填满可选字段。文章从解析器为什么需要比源码更多的信息讲起,对比「一个大结构体」的做法为何会随着节点种类增多而失控,再引入 TypeScript 的判别联合作为可表达合法形状的方案,并给出小的 Go 实现片段,面向熟悉 Go 或 TypeScript 但不需要编译器内部经验的读者。