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

说实话,老周当年第一次听到TypeScript的时候,翻了个大大的白眼。不就是给JS加类型吗?纯JS写了这么多年不是好好的?多写那么多类型注解,不是脱裤子放屁多此一举?那时候圈子里全是这种论调,一群写惯了自由代码的老炮,谁都不想被规矩绑着。
真香来得比预想中快
转折点是2018年,老周跳去了国内某大厂做电商活动页的业务开发。整个项目二十多个人,同时改同一个代码库,每年要上几百场大小活动,你改完我改,三个月不碰,自己写的代码都认不出来。第一次大促上线,就因为新同学传错了活动档期的类型,整个会场页直接白屏十分钟,损失多少钱不用多说。那一次之后,团队下定决心全量迁移TypeScript。
一开始怨声载道,大家都嫌写代码慢了,光是改存量代码的类型注解就花了整整半个月。结果呢?重构完第一个版本,线上报出来的类型相关bug,直接掉了八成。老周那个月,准点下班了十九次。这在之前根本想都不敢想。

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

很多新人刚学前端,上来就被要求学TS,会觉得是额外的负担,平白多了好多要记的规则。其实换个角度想,TS根本不是来革JS的命的,它就是给原来的JS打了个适配时代的补丁。JS本来就是网景公司那个工程师花了十天写出来的玩具,谁能想到二十年后,它变成了能写前端能写后端能写客户端的全栈语言?原来的设计不适应现在的开发体量了,怎么办?TS出来补这个缺口,就这么简单。
不过话说回来,老周现在写个人的小玩具项目,还是用纯JS。百八十行的脚本,实现个小工具爬个数据,犯不着折腾类型。他从来不神话TS。技术这个东西,从来都是给人服务的,不是用来装X的。你要做小项目,纯JS爽得很,怎么快怎么来。你要做大项目,要团队协作,TS给你兜住底,避免低级错误,提高协作效率,这不就够了?
糖水铺的吊扇转得慢悠悠,吹得桌上的招聘简章晃来晃去,老周现在自己开小工作室接项目招人,简历上没提TS的,他都会多问一句,会不会写类型注解?不是嫌人水平差,是真的耗不起那个找bug的时间。十年前那个在隔板房里对着一堆乱码掉头发的小伙子,现在已经能准点下班接孩子放学了。
风把烟味吹到街对面,糖水铺的老板喊着收碗,谁也说不好十年后前端又会变成什么样子。但至少现在,TS接住了那批从野路子走出来的前端,把整个行业,拖进了工业化协作的时代。对吧?
作者|大讲堂
排版|大讲堂
审核|小北
大讲堂