typescript egg mysql_基于 Egg.js 的 Typescript 开发约定

有一种说法是 9102 年做 Node 后台开发还不上 Typescript 不是太懒惰就是太菜了,其实假如你使用 Egg.js, 他们已经对基于 ts 开发做了许多支持,在项目里引入 ts 并没有那么困难,且对减少开发过程中的低级错误非常有帮助。

在这里记录一下个人在 Egg.js 项目里引入 ts 的一些约定,其实都在官方文档、文章和 Github issue 里了。

从 JS 迁移到 TS

web 开发不是瀑布流,定了需求闭门开发几个月上线,往往是基于线上运行的 js 项目,要改造成基于 ts,前提是不能中断服务,初步设想有以下三种方案:

逐步替换文件,.js 和 .ts 后缀文件并存,通过 .d.ts 文件来标明类型获取提示;

分成 js base 和 ts base 两个项目,逐步替换接口,新接口完成并通过测试后,流量切换到新项目;

直接做项目全量文件的 ts 化,利用 any 类型先完成迁移,后期再逐步以【用到了就重构】的原则重构所有代码。

第一种方式在定义 .d.ts 文件时非常繁琐且会有一些坑,如很难推断函数返回类型,且在使用一些 es 原生方法时覆盖类型会有坑;

第二种方式需要实现一种流量切换的方式,如加入 haproxy 中间层,通过 header 或是 path 等方式来识别新老接口流量。碰到的主要问题是在新老项目一个服务往往要改动多个公共文件,很难保持同步,会有矛盾发生;

第三种方式是最后采用的方式,从 js 代码中切出一个新分支,写了脚本批量替换文件后缀,花了大约 2-3 天完成迁移,期

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值