TypeScript:写给前端程序员的成人礼

上周六在天河石牌东的老牌糖水铺,老周把冰绿豆沙喝得只剩碗底的碎冰,叼着五块钱的白烟嘴,骂十年前的自己。那时候他是个靠切图写特效混饭吃的前端,租着这个城中村八百块一个月的隔板房,改bug改到头发一把一把掉。 那个搞出大事故的bug,说出来好笑,就是给商品价格传了个字符串,结账的时候算出来总价堆成了乱码,线上炸了四个小时,全公司加班,老板站在身后抠脑袋,他手心全是汗。那个bug,藏在三层嵌套的回调函数里。找了三天。眼都瞎了。

被弱类型放养的前TS时代

那时候整个前端圈都是这么过来的。JS天生灵活,变量想是什么类型就是什么类型,写一百行的小脚本当然爽,怎么快怎么来。可项目一旦过万行,所有人都抓瞎。你接手别人的代码,一个叫data的变量扔过来,你根本猜不到里面装的是数组还是对象还是字符串,改一行动全身,一不小心就冒出一堆类型错误,线上出问题了还要逐行打log排查,耗进去大半天都是常事。

2012年前端开发纯JS匿名函数bug截图
2012年前端开发纯JS匿名函数bug截图

说实话,老周当年第一次听到TypeScript的时候,翻了个大大的白眼。不就是给JS加类型吗?纯JS写了这么多年不是好好的?多写那么多类型注解,不是脱裤子放屁多此一举?那时候圈子里全是这种论调,一群写惯了自由代码的老炮,谁都不想被规矩绑着。

真香来得比预想中快

转折点是2018年,老周跳去了国内某大厂做电商活动页的业务开发。整个项目二十多个人,同时改同一个代码库,每年要上几百场大小活动,你改完我改,三个月不碰,自己写的代码都认不出来。第一次大促上线,就因为新同学传错了活动档期的类型,整个会场页直接白屏十分钟,损失多少钱不用多说。那一次之后,团队下定决心全量迁移TypeScript。

一开始怨声载道,大家都嫌写代码慢了,光是改存量代码的类型注解就花了整整半个月。结果呢?重构完第一个版本,线上报出来的类型相关bug,直接掉了八成。老周那个月,准点下班了十九次。这在之前根本想都不敢想。

VS Code中TypeScript类型错误提示界面截图
VS Code中TypeScript类型错误提示界面截图

哦对了,你现在天天用的VS Code本身,就是用TypeScript写的。微软把这个语言做出来,连自己写编辑器都要用,能不好用?其实哪是TS突然变香了,是前端开发的玩法早就变了。十年前前端就是页面边角的小配角,做个轮播图弄个表单验证就完事,一个人就能包完整个网站的前端。现在呢?前端要做单页应用,要做小程序,要做跨端,要扛住亿级流量的业务,几十上百个人维护一个千万行代码库,原来那种放养的玩法,真的玩不下去了。

TS不是银弹,是进化

TS不是银弹,是进化
TS不是银弹,是进化

很多新人刚学前端,上来就被要求学TS,会觉得是额外的负担,平白多了好多要记的规则。其实换个角度想,TS根本不是来革JS的命的,它就是给原来的JS打了个适配时代的补丁。JS本来就是网景公司那个工程师花了十天写出来的玩具,谁能想到二十年后,它变成了能写前端能写后端能写客户端的全栈语言?原来的设计不适应现在的开发体量了,怎么办?TS出来补这个缺口,就这么简单。

不过话说回来,老周现在写个人的小玩具项目,还是用纯JS。百八十行的脚本,实现个小工具爬个数据,犯不着折腾类型。他从来不神话TS。技术这个东西,从来都是给人服务的,不是用来装X的。你要做小项目,纯JS爽得很,怎么快怎么来。你要做大项目,要团队协作,TS给你兜住底,避免低级错误,提高协作效率,这不就够了?

糖水铺的吊扇转得慢悠悠,吹得桌上的招聘简章晃来晃去,老周现在自己开小工作室接项目招人,简历上没提TS的,他都会多问一句,会不会写类型注解?不是嫌人水平差,是真的耗不起那个找bug的时间。十年前那个在隔板房里对着一堆乱码掉头发的小伙子,现在已经能准点下班接孩子放学了。

风把烟味吹到街对面,糖水铺的老板喊着收碗,谁也说不好十年后前端又会变成什么样子。但至少现在,TS接住了那批从野路子走出来的前端,把整个行业,拖进了工业化协作的时代。对吧?

作者|大讲堂

排版|大讲堂

审核|小北

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:TypeScript:写给前端程序员的成人礼
文章链接:https://lfdjt.com/info_23_23561.html