TypeScript 构建性能的瓶颈在于声明文件生成依赖类型检查器逐文件分析依赖关系,无法并行。6.0 的
isolatedDeclarations 用纯语法变换替代类型推断,让每个文件的 .d.ts 生成独立并行,大型 monorepo 构建时间从分钟级降到秒级。代价是强制:所有导出的函数、类、变量必须显式标注类型。迁移时需补充返回类型和属性类型,暴露此前隐藏的 implicit any。该特性也让 esbuild、swc 等快速转译器能直接生成声明文件,无需嵌入类型检查器。
传统模式下,修改一个共享工具包后增量构建需 4-6 分钟,因为类型检查器要重新分析所有依赖包。启用 isolatedDeclarations 后同一变更只需 8-12 秒:并行工作线程只做语法分析,跳过类型检查。类型检查仍可在 CI 或按需运行,不再阻塞本地迭代。
典型迁移错误:export const add = (a: number, b: number) => a + b缺少返回类型,必须改为export const add = (a: number, b: number): number => a + b。导出对象字面量需手动标注类型或用as const。官方建议先对工具包启用,再逐步扩展。
与外部工具(如 api-extractor)相比,isolatedDeclarations 消除后处理步骤,直接生成纯净声明。适合 monorepo 和注重 API 契约的团队;小库或遗留代码库可暂缓启用。
真实收益在 monorepo 场景最明显:包拆分不再受构建时间惩罚,声明生成规模与文件数线性相关而非依赖深度。
#开发者 #工具 #TypeScript #isolatedDeclarations #Monorepo #构建性能 #声明文件 #esbuild #swc
@DevToolboxHub



