TypeScript 项目里先用 tsc --noEmit 做类型检查

11 次浏览1 条回复

有些项目构建会顺手产物、打包、跑插件,想单独确认类型问题时,可以先只跑 TypeScript 编译检查。

环境:Node.js 18+,TypeScript 5.x,在项目根目录执行:

npx tsc --noEmit

它会按当前 tsconfig.json 检查类型,但不会生成 dist 或 .js 文件。CI 里也可以单独放一条脚本:

{
  "scripts": {
    "typecheck": "tsc --noEmit"
  }
}

如果是 monorepo,最好进到对应包目录跑,或者按项目已有的 workspace 命令来;不然可能读到的不是你以为的那份配置。

还有个小点挺容易混:如果项目用的是 Vite、esbuild 或 swc 这类工具转译,构建能过不代表类型一定过。它们很多时候只负责把 TS 变成 JS,类型检查还是要单独交给 tsc --noEmit。

CI 里把 typecheck 和 build 分开也比较清楚,一个看类型,一个看产物。