夏有乔木雅望天堂,张韶涵,zara官网-我想回家,北上广深游子信息交流网,有价值的一线城市咨询

作者 | Roger Goldfinger

译者 | 弯月

责编 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

【CSDN 编者按】本文作者在其时正在运用 Flow 下,想一次性切换到TypeScript,触及30万行代码,他们搬迁的进程值得咱们学习:先兼并TypeScript东西,再重复进行操练,成功在12分钟内成功经过CI流程,并终究修正过错。

咱们公司一向致力于改善开发人员的作业体会。在运用Flow度过了两年愉快的开发韶光后,最近咱们决议转而选用TypeScript,由于TypeScript有杰出的社区支撑、好的修正体会、支撑的类型也更多。

所以,咱们决议一次性把Flow转成TypeScript。

咱们运用主动转化东西搬迁了2,700个Javascript文件,并在12分钟内成功经过CI流程,接下来咱们马上就能享用新言语带来的优势了。与逐渐搬迁比较,(这样做)咱们省却了许多的操作杂乱性,并最大极限地减轻了给工程团队带来的担负和影响。在经过了一周的TypeScript学习后,软件工程师们再次重回岗位,开端了更为迅速地开发作业。

为何做出这种改动?

在曩昔的两年中,咱们一向在运用Flow来处理咱们Javascript代码中的类型。咱们有40名工程师担任开发Web代码,杰出的类型体系可以保证代码的正确性、加速新来工程师的习惯速度,且有助于安全的重构。其时,Flow是一个正确的挑选,逐渐选用支撑意味着咱们可以渐渐习惯。

最近跟着TypeScript的兴起,越来越多的人挑选TypeScript,咱们也细心研讨了咱们运用的Flow。一向以来咱们都知道,Flow与修正器的集成有时十分缓慢,而且应用程序的中心部分(比方Redux状况和组件props)并没有添加有意义的类型,部分原因是Flow对redux和reselect的typedef支撑有问题。由于相应的Flow类型库的维护者现已很长时刻没有更新了,所以咱们也忧虑Flow的未来。

在开端触摸TypeScript后,咱们惊人地发现VSCode对该修正器的支撑十分好,而且还有许多十分有协助的过错音讯,此外社区的支撑也很给力。再加上其他盛行的代码库和项目,让咱们欣喜若狂,咱们越发必定这是正确的方向。

实践的代码搬迁进程

搬迁近30万行的代码,这个作业量好像超出了手动的接受规模,所以咱们决议一次性转化整个代码库,运用babel插件完结语法的修正,再经过一个脚本重命名文件。

咱们考虑过逐渐搬迁,一次将一个文件搬迁到TypeScript中。为了在搬迁期间保存跨言语的类型,咱们可以输出两种言语的界说文件,然后生成这些界说文件到另一种言语的转化。终究,咱们忧虑这种办法过于杂乱,工程师有必要把握代码库中两种不同的言语,而且搬迁或许需求很长时刻,这个进程一般还会添加现有作业的杂乱性。

为了预备大规模搬迁,首要咱们兼并了TypeScript东西,例如装备Babel和设置ESLint。咱们一遍又一遍地重复操练搬迁的进程,操练快速地牢靠地让转化后的代码库经过CI流程,并在运转手册上记录了这个进程。

到终究的时分,咱们可以在12分钟内完结一切的代码搬迁,并履行完一切的手动过程经过CI流程。这保证咱们可以最大极限地削减对工程师现有作业的搅扰,并保证咱们有时刻处理意外发作的问题。

终究,在咱们约定好的那一天,咱们快速冻住了代码库,然后履行了手册上的一切过程,对这些改变进行了一些手动测验,并将代码兼并到了生产中。

修正过错

当然,搬迁到TypeScript中的代码库存在许多过错(大约有6千多个),咱们决议暂时经过注释// @ ts-ignore疏忽这些过错,先经过CI流程再说。究竟,Flow的类型掩盖没有捕获到这些过错。只要疏忽这些过错,咱们才可以一次性地完结搬迁,而无需在修正过错的进程中冻住整个代码库。

咱们编写了一个脚本,主动将// @ ts-ignore注释刺进到咱们的大多数代码中,一起保证这些疏忽掉的都是由于JSX过于杂乱。所以,咱们的JSX中残留了大约1,400个过错,在接下来的一周里,咱们每个人都着手修正这些过错。这为咱们每个人供给了一次很好的学习TypeScript的时机,在修正剩余过错的进程中,咱们了解了类型体系和最佳实践。

搬迁成功

整体而言,此次代码搬迁十分成功。咱们将类型掩盖率从66%添加到86%,现在从Redux连接器到React组件树,都现已具有完好的类型界说。VSCode供给的修正体会愈加快捷,愈加牢靠,咱们在修正过错时,发现了更多代码中的过错。最重要的是,工程师开端信赖类型体系。

当然,在搬迁进程中,还有一些有待改善的当地。在内部检讨会议上,咱们提出了以下有待改善的当地:

  • 咱们应该展开更多教育和配对活动,并共同尽力处理常见的过错。每个团队的TypeScript代表都应该积极地传达常识并推进代码搬迁。

  • 咱们应该事先为产品团队所需的作业设定更明晰的希望,并为团队供给一种简略的办法,让他们知道他们应该做什么作业以及搬迁进程中剩余的作业。

  • 咱们应该花更多的时刻来保证UI组件和其他连接器代码已加入了正确的类型。

在接下来几个月内,咱们将持续做一些更新,并为完成类型过错的零疏忽而持续尽力。

原文:https://medium.com/tech-quizlet/now-or-never-migrating-300k-loc-from-flow-to-typescript-at-quizlet-d3bae5830a1

本文为 CSDN 翻译,转载请注明来历出处。

【END】