我家旧笔记本里的TypeScript代码

去年冬天整理储物间,翻出来我爸2018年入手的那台ThinkPad。电池鼓了。顶得键盘W键微微翘起来。我蹲在地板上把壳子上的霉斑擦干净,按了半天开机键,居然还能转。风扇嗡嗡响的声音,跟他当年赶项目时坐在餐桌前写代码的动静一模一样。

压在键盘缝里的便签

打开文档夹的时候,一张泛黄的便签从W键的缝隙里滑出来。是我爸的字,歪歪扭扭的,墨都晕开了一点:interface不是接口,是给每个变量找好固定的位置,不让它乱跑。

他那会快45了,在工控厂做了十几年嵌入式开发,写C++写得顺手,连代码规范都是他牵头定的。2017年公司接了智慧园区的能耗监测项目,全组找不出一个会写前端的人,领导拍他肩膀,说老周你资历老,上。他硬着头皮啃了半个月JavaScript,写出来的页面bug多到数不清。最离谱的一次,大冬天的半夜三点,他爬起来接电话,园区中控室说监测页面的温度数字直接跳到999度,差点触发消防警报。他裹着睡衣坐在电脑前查了俩小时,才发现后端传过来的温度值是字符串类型,JS默认把数字和字符串拼到一起了。他当时穿着秋裤,冻得脚都麻了,查完bug直接坐在沙发上睡到天亮。

那会他总吐槽,这破JS就像没装栏杆的阳台,你随便扔个东西出去,它都不提醒你,等砸到人了才知道闯祸。

旧ThinkPad键盘缝隙夹着泛黄手写便签
旧ThinkPad键盘缝隙夹着泛黄手写便签

第一次接触TypeScript是跟以前带的徒弟吃饭。那徒弟在互联网公司做前端,听他吐槽完JS的坑,筷子往碗上一放,说叔你用TS啊,给每个变量定好类型,你要是传错了,编辑器当场就给你标红,根本等不到上线出问题。

他半信半疑回去装了环境。第一次写个简单的页面,光给每个参数加类型注解就花了半小时,当时还拍着桌子跟我妈吐槽,这玩意比写C++的头文件还啰嗦。结果跑了一周,之前那种莫名的类型报错少了八成。他盯着屏幕上的红波浪线,突然就懂了——那些看起来麻烦的规则,根本不是给程序员添堵的,是提前把坑都标出来,省得你以后掉进去爬半天。

存了五年的编译报错截图

电脑里的文件夹翻到第三层,有个名字叫“TS踩坑记”的文件夹,打开全是当年的报错截图。最早的一张是2019年3月的,屏幕上的报错提示明明白白:Type ‘string’ is not assignable to type ‘number’。他用画图工具在报错的位置画了个粗红圈,旁边歪歪扭扭写了个“操”。

那会他眼睛已经开始花了,写代码要把系统字体调到最大,每次编辑器弹出来提示,他就把脸凑到离屏幕二十公分的地方,眯着眼睛逐行看。有时候是写的类型注解不匹配,有时候是引入的第三方工具包没带对应的TS类型声明,他就翻遍文档找对应的@types安装包,找的时候还碎碎念,这些人写代码怎么这么不负责,连个类型定义都要用户自己补。

旧电脑文件夹内TypeScript编译报错截图合集
旧电脑文件夹内TypeScript编译报错截图合集

他当年记的笔记我也翻到了。没有什么复杂的术语,全是他自己悟出来的大白话:泛型就是给不同的变量留不同的抽屉,你放进去啥,抽屉就守着啥,不让你乱塞东西。联合类型就是一个变量可以站好几个岗,但是每个岗的职责得说清楚。

就靠这些自己攒的笔记,他把整个能耗监测平台的前端页面全用TS重写了。上线之后整整半年,中控室一次都没因为前端的问题打过报修电话。他那会在部门的季度分享会上,本来准备了十几页PPT,结果上去就把那台旧笔记本抱上去,给所有人看他存了半文件夹的报错截图,说我这快50的人都能把TS用明白,你们年轻人别嫌写类型麻烦,你现在敲代码多写两行字,以后就能少熬十个通宵。

我那会在上高中,周末回家总看见他坐在餐桌前写代码,电脑旁边放着半杯泡了枸杞的菊花茶。他还总拉着我给他讲泛型的逻辑,我那会满脑子都是模考的数学题,根本听不懂,就对着屏幕点头说挺好的。他还以为我真懂,转头就给我买了本厚得能砸死人的TS入门书,我翻了两页,就拿来垫了晃荡的桌脚。

现在还在跑的老代码

现在还在跑的老代码
现在还在跑的老代码

去年我帮他把电脑里的旧代码导出来,才知道那个2019年写的能耗监测页面,现在还在园区的中控室跑着。现在管中控的小张是个98年的小孩,说这页面从来没崩过,比后来换的几个用新框架写的页面稳多了。

我当时把那段旧代码拉到现在最新的TS环境里编译,居然一次就过了,连个警告提示都没有。他那会已经退休半年了,戴着老花镜凑在屏幕旁边看,手放在鼠标上,点了下运行按钮,看着页面上的温度、电压、电流数字稳稳跳出来,嘴角翘了一下。他现在连编辑器的快捷键都快忘了,但是一提到当年写TS的日子,还能准确说出哪个报错是因为少加了个括号。

说实话,我以前总觉得技术是写在官方文档里的冷冰冰的定义,是发布会台上讲的概念,是程序员圈子里比来比去的工具优劣。不过话说回来,真把这些技术翻到它落在普通人生活里的那面,哪有什么高高在上的东西啊。

就像TypeScript,你在技术社区里能看到一堆人争论它是不是过度设计,争论写类型注解是不是浪费时间,争论它的学习曲线是不是太陡。可对于我爸那个快被行业淘汰的老工程师来说,这玩意根本不是什么高大上的技术选型。是他在45岁那年,怕自己跟不上年轻人的节奏,对着满屏的红波浪线,一笔一笔记笔记,攒出来的一点点安全感。是他在无数个半夜爬起来改bug的日子里,找到的那个能让他睡个安稳觉的解法。

前几天我在公司写TS代码,给一个接口的返回值加类型注解的时候,突然就想起他压在键盘缝里的那张便签。屏幕上的编辑器弹出来一个类型不匹配的提示,我没有像以前那样皱着眉头跳过,突然就觉得,那个红波浪线,跟他当年看到的那个提示,根本就是同一个东西。

没有什么能永远不变的。代码会老,电脑会坏,连当年那个抱着电脑跑现场的中年人,现在都每天在家遛鸟、给花浇水。可那些被人一点点攒出来的、实实在在的安全感,会顺着代码的行间距,一直跑下去。

作者|大讲堂

排版|大讲堂

审核|乐乐

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:我家旧笔记本里的TypeScript代码
文章链接:https://m.lfdjt.com/info_23_30518.html