将370万行Flow代码迁移到TypeScript
Pinterest 将 370 万行代码从 Flow 迁移到 TypeScript,历时八个月,结果是类型安全性、开发者体验和招聘都得到了改善。公司最初在 2016 年选择 Flow 而不是 TypeScript,是因为 Flow 的渐进式采用和与 React 的无缝集成。但是,随着行业将 TypeScript 视为 JavaScript 类型检查的标准,Pinterest 决定采用它,因为它拥有更好的社区支持、语言特性和人才储备。迁移过程使用“大爆炸”方法,分为三个阶段:设置、转换和集成。设置阶段涉及配置 TypeScript 和 @typescript-eslint,而转换阶段涉及迁移依赖项、运行 codemods 和抑制 ESLint 错误。集成阶段集中于将现有系统适应新的 TypeScript 环境。公司编写了一个脚本来自动化整个过程,尽量减少合并冲突和手动干预。在通过每日自动测试、多轮手动测试和字节级静态分析验证迁移后,Pinterest 成功推出了 TypeScript 分支。公司从开源社区中学到了很多,并贡献了 Stripe 的 flow-to-typescript codemod。Pinterest 的经验为其他公司考虑类似迁移提供了宝贵的教训。