核心结论
TypeScript的类型检查和代码生成是相互关联但可以分离的阶段。源码存在类型错误时,编译器在技术上仍可能生成JavaScript,是否阻止输出取决于noEmitOnError等配置;noEmit则表示完全不让tsc生成文件。现代前端工程还常由Babel、SWC、esbuild或框架构建器负责删除类型语法,这些工具通常侧重快速转译,不一定执行完整的TypeScript语义检查。因此,“可以转译”“类型检查通过”“测试通过”和“生产打包成功”是不同的质量门,构建流水线应分别验证,不能以其中一个替代其他环节。
底层机制
编译器需要扫描、解析和绑定源码,再执行类型检查、