增量编译为何仍可能反复检查大量文件,怎样定位类型检查性能瓶颈
简答题困难629 次浏览
参考答案与解析
# 核心结论
开启incremental不等于每次修改只检查当前文件。增量编译依据文件版本、依赖图、公共类型签名和构建信息决定结果能否复用;如果被广泛依赖的导出类型发生变化,所有潜在消费者都可能需要重新检查。复杂条件类型、巨大联合、重复泛型实例化、聚合导出和不稳定的声明输出还会放大成本。定位性能问题应先测量各阶段耗时和实例化规模,再针对真正瓶颈优化。
# 底层机制
编译器需要读取和解析源文件、解析模块、绑定符号、建立类型关系,并按配置生成代码或声明。启用incremental后,部分状态写入.tsbuildinfo,后续构建根据内容和签名变化判断哪些结果可以复用。文件内部实现变化若不影响公共签名,受影响范围
