某位伟人说过,没有调查,就没有发言权。

这是我基于 AI + TypeScript 写的项目,花了大半年,提交了近3000次,TypeScript可真是害苦我了。

我一气之下,把TypeScript全部换成JavaScript了,一点TypeScript都不留。

之前含TypeScript量可是有 80% 以上的。
那么接下来,就把我为什么从全力使用TypeScript,到全力抛弃TypeScript的思考分享出来。
首先叠个甲,这里并不是说TypeScript本身不好,单纯的就是TypeScript不适合我,或者说我个人太菜了。
很多时候,技术没有好坏之分,只有合不合适,经过这半年多的时间,对这句话的理解更加深刻了。
我是2015年入行的,经历过TypeScript从名不经传,到家喻户晓的过程,但从业10年,我并没有因为TypeScript的呼声很高,而把TypeScript在我的项目中全面落地。
这也从侧面说明,我是一个在技术方面,不追求新潮,也不追求强大的人,可能正应了那句话,我是一个在用着自己喜欢的技术,一直待在自己舒适区的人。
但AI的发展,让我保持了10年的舒适区有了些许的松动。
TypeScript作为前端领域革命性的变化,多多少少有所了解,但作为一个骨子里极度喜欢自由的人,实在是不想被类型所束缚,也有过多次尝试,但早已习惯了JavaScript的自由,用起来极其别扭。
在AI的协助下,我仿佛如有神助,写TypeScript最麻烦的部分,AI全部搞定了。
前几个月,还算融洽,但AI写的代码,不看不知道,一看吓一跳,可以说是垃圾屎山也不为过。
或许我们从整个项目的局部看,这AI写的代码还真他娘的不错,但如果你从整个项目的协调性,系统性,扩展性,维护性去看,AI写的就是一大坨屎山。
怎么办呢?有两种办法,第一种是眼不见为净,还有一种就是重构它。
重构也有两种方法,用AI去重构AI,或者古法手工重构。
我都试过,实践证明,AI重构后的屎山,还是屎山。
或许是我对AI的提示词,对AI提供的代码规范不够细节,说得不够清楚,但要真让我一五一十,事无巨细的说清楚,那跟我古法手工重构有啥区别?
所以最终还是回到了,古法手工重构的地步。
这个时候,才真正明白了,什么是一个头,两个大。
换做写JavaScript的时候,我重构直接撸起袖子就是干,但现在,我首先要梳理类型,然后让代码与类型进行完美结合,再反复地在代码和类型中进行各种穿插游走。
重构了一段时间,卧槽,好累啊,我大部分时间都不是在写功能,写代码,而是在跟类型斗智斗勇,因为我无法忍受any,无法忍受unknow,也无法忍受不严谨的类型。
原本应该很快就把功能写完的,但至少70%-80%的时间,都在类型这个问题上面反复横跳,我TM到底是要写代码还是写类型啊?
直到我彻底放弃TypeScript的那一刻,我才真正明白,我是一个一根筋的人,我不喜欢一个有类型系统的语言,它居然可以让你不写类型。
正是TypeScript这种,一边要革了JavaScript的半条命,一边又给JavaScript另外半条命一直吊盐水,让我这种强迫症特别抓狂。
回到JavaScript后,终于松了口气,腰不酸,腿也不痛了,回想到很多年以前刚入行那会,所有网站都是JavaScript写的,也不见有几个捅破天的问题出现。
反而是TypeScript问世后,好像继续用JavaScript,整个项目,团队,公司,市值都会天崩地裂一样。
而AI的发展,就算用JavaScript,出现问题的概率也会远远低于多年以前只有JavaScript的时代。
对于代码而言,我现在更信任自己这个人肉编译器,比如用户对接口的传参,每个数据的类型,大小,范围,我都会有一个验证函数进行专门的验证。但如果用TypeScript,你就要进行繁复的判断,类型的定义,不然就会出现红色波浪线。
那我把严格检测关了不就行了吗?那这样我为什么不直接用JavaScript一劳永逸呢?用TypeScript不就是馋它的类型系统吗,但类型系统反而带来了更多麻烦。
以上均为个人单打独斗的情况之思考与分享,不适合所有人,TypeScript是一个非常好的编程语言,革命性的编程语言,但抛去滤镜之后,从自身需求出发,其实很多人都不需要TypeScript。
我是农村程序员,独立开发者,前端之虎陈随易,个人网站 👇
- 个人网站 1️⃣:chensuiyi.me
- 个人网站 2️⃣:me.yicode.tech
我的所有文章均为古法手写,无 AI 添加剂,请放心食用,如果你觉得本文有用,一键三连 (点赞、评论、转发),就是对我最大的支持~