类型检查器与自定义语法转换的执行顺序为何限制基于类型的代码生成
简答题困难579 次浏览
参考答案与解析
# 核心结论
自定义 TypeScript 转换器主要操作语法树,转换过程中创建的新节点不会自动重新经历完整的绑定和类型检查。转换器即使能通过 Program 取得 TypeChecker,查询到的可靠类型信息也主要属于原始程序及其原始节点;不能假设检查器会为新生成的标识符、调用和导入建立完整符号关系。因此,基于类型信息生成代码时,应把“分析原始程序”和“生成输出代码”分开,并对最终产物进行独立的二次编译或运行验证。
# 底层机制
典型编译过程会先解析源码形成语法树,再绑定声明与符号,按需完成类型检查,随后在输出阶段执行相应转换并打印代码。转换器可以访问原始节点,并通过检查器读取其符号、类型或签名:
``
