tsc
TypeScript 编译器总览,说明 tsc 的职责、常用命令、build mode 与它和 tsserver 的边界。
#tech / dev
#resource / typescript
#type / concept
#status / growing
tsc
[!info] related notes
- 所属 MOC: TypeScript MOC
- 总览页: TypeScript
- 关系笔记: TypeScript、tsc、tsconfig 与 tsserver 的关系
- 相关配置: tsconfig 使用详解
- 相关概念: TypeScript 语言服务与 tsserver
一句话定义
tsc 是 TypeScript 编译器,用来读取源码和 tsconfig,做类型检查,并在需要时生成 JavaScript、声明文件和 sourcemap。
核心职责
tsc 主要负责三件事:
- 解析 TypeScript program
- 执行类型检查
- 生成编译产物
典型产物包括:
.js.d.ts.js.map.d.ts.map
常用命令
tsc
tsc --noEmit
tsc --watch
tsc -b
tsc -b --watch
tsc
按当前 tsconfig 执行构建或检查。
tsc --noEmit
只做类型检查,不生成输出。团队项目里常用于 CI 或本地预检查。
tsc --watch
监听文件变化并持续重新检查 / 重新编译。
tsc -b
进入 build mode,配合 project references 按依赖顺序构建多个 TypeScript 项目。
tsc 和其他工具的边界
tsc vs tsserver
tsc偏命令行构建tsserver偏编辑器智能与长期驻留服务
tsc vs bundler
tsc 负责编译和类型语义,不等于完整 bundler。代码拆分、静态资源处理、产物优化通常要靠:
- Vite
- Webpack
- Rollup
- esbuild / Rspack 等
tsc vs Babel
Babel 更偏语法转译;TypeScript 的类型语义检查通常仍要靠 tsc。
适用场景
- 纯 TypeScript 库开发
- 需要生成
.d.ts的包 - monorepo 中的 project references 构建
- 需要单独跑类型检查的 CI 流程
边界与易混淆点
tsc 不是所有前端项目的最终构建入口
现代前端项目里,很多时候 tsc 负责类型检查或声明文件生成,真正的打包和发布由框架工具链接手。
paths 只影响 TypeScript 如何理解 import
给 tsconfig 配了 paths,不等于运行时和 bundler 也自动懂这些 alias。
参考信息
- TSConfig 参考:https://www.typescriptlang.org/tsconfig
- Project References:https://www.typescriptlang.org/docs/handbook/project-references.html