
你有没有发现一个怪现象?2025 年的前端圈,说自己不用 TypeScript 几乎成了 “政治不正确”。上次我去面试一个应届生,小伙子简历里写满了 TS 项目经验,聊到细节才发现,他为了 “凑经验”,连个三天做完的静态展示页都强行套了 TS 配置。
这种 “无 TS 不高端” 的风气,是不是已经逼得你也在硬扛?作为曾经力推 TS 重构三个旧项目的 “老前端”,我最近半年却狠狠踩了坑 —— 直到换回 JSDoc,才终于找回开发的爽感。今天就掏心窝子跟你聊聊,那些被 “技术正确” 绑架的坑,该怎么填。
TS 怎么成了前端圈的 “必选项”?
目前打开招聘软件,十个前端岗位九个要求 “精通 TypeScript”;刷掘金、知乎,但凡聊技术选型,必有大佬跳出来说 “不用 TS 的项目没有灵魂”。更夸张的是上个月的前端沙龙,有位讲师直接放话:“2025 年还写纯 JS 的,基本可以转行了”。
这种风气甚至蔓延到了团队管理里。我前同事所在的创业公司,连两周就要上线的营销活动页,老板都强制要求用 TS 开发。结果呢?三个开发花了一天调 tsconfig.json,上线前还由于第三方库类型缺失,被迫加了十几个 // @ts-ignore,完全背离了 “快速迭代” 的初衷。
不是说 TS 不好,而是这种 “所有场景必上 TS” 的执念,早就让它变了味。
我的大实话:硬扛 TS 半年,我踩了三个致命坑
作为曾经的 TS 拥护者,我去年还在朋友圈晒过 “用 TS 重构项目后零 bug 上线” 的截图。但今年接手三个不同规模的项目后,我彻底破防了 —— 这些坑,恐怕你也正在经历:
第一个坑:配置先耗半天,业务还没动笔
上周开新的小程序项目,光是让 TS 和 Vite、ESLint、单元测试工具和平共处,我就耗了整整 8 小时。target 选 ES2020 还是 ESNext?moduleResolution 用 bundler 还是 node?paths 别名怎么同步?每改一个参数就要重启项目验证,最后改得我都忘了最初要写什么业务逻辑。
你是不是也有同感?明明只是想写个简单的接口请求函数,却先要当半天 “配置工程师”,耐心早就磨没了。
第二个坑:类型比逻辑还长,纯属自我折磨
上月底做一个数据可视化组件,核心渲染逻辑也就 30 行,结果为了处理嵌套的图表配置项,我写了 70 多行 type 和 interface。一会儿用 extends 继承,一会儿用 infer 推导,最后自己回头看代码,都要反应半天 “这个类型到底代表什么”。
更讽刺的是,上周需求变更,图表字段改了两个,我光调整类型定义就花了 40 分钟 —— 这哪里是用工具提效,分明是被工具绑架。
第三个坑:第三方库拖后腿,安全感全成空谈
最让我崩溃的是上个月集成一个图片处理库。这个库是纯 JS 写的,社区的 @types 包两年没更新,类型定义全是错的。要么花三天手写.d.ts 文件,要么用 any 兜底,最后我选了后者 —— 那我前面费劲搭的 TS 环境,意义何在?
这种 “为了类型而类型” 的尴尬,你肯定也遇到过吧?明明想靠 TS 保安全,结果被第三方库逼得处处妥协。
不硬扛的解法:JSDoc 才是 2025 年的 “中间路线”
踩够坑后,我试着在.js 文件里加 JSDoc 注解,没想到直接打开了新世界的大门。亲测下来,这玩意儿能拿到 TS 80% 的好处,却省了 100% 的麻烦:
1. 智能提示不打折,写代码像开了导航
在 VSCode 里,只要给函数加个 /** @param {string} url 图片地址 */,输入参数时自动弹出提示,和 TS 的体验几乎没区别。上周写接口封装函数,同事借我电脑,还问 “你这 JS 怎么有 TS 的提示?”
2. 类型检查可选,不想扛就 “躺平”
加一句 // @ts-check,简单的类型错误(列如传 number 给 string 参数)会直接标红;要是赶项目想偷懒,删掉这句话就是纯 JS,怎么写都不报错。上个月做营销页,我只在接口请求函数加了检查,其他地方放飞自我,上线速度比以前快了一倍。
3. 不用编译直接跑,启动快到飞起
没有 tsc 编译步骤,npm run dev 秒启动,改完代码热更新也比 TS 项目快半秒。别小看这半秒,一天改几十次代码,累计能省出一小时摸鱼时间。
4. 第三方库不折腾,兼容度拉满
遇到没有类型的 JS 库?直接在使用的地方加 @type 注解,列如 /** @type {import ('xxx').Func} */,不用管库本身有没有类型定义。上次集成那个图片库,五分钟就搞定兼容,再也不用写 // @ts-ignore 自欺欺人。
最后说句掏心窝的:技术选对场景才叫牛
实则我不是 “讨厌” TS,而是反感那种 “不用 TS 就是菜” 的道德绑架。大型多人协作项目,TS 的类型约束能减少 80% 的沟通成本,当然该用;但要是做原型验证、短期营销页,JSDoc 的灵活性才是真香。
就像我目前的团队,已经明确了规则:超过三人维护、生命周期超半年的项目用 TS;两人以内、三个月内上线的项目用 “JS+JSDoc”。上个月算下来,小项目开发效率提升了 40%,bug 率还没上升 —— 这才是工具该有的样子。
最后想问问你:你最近有没有为 TS 硬扛的经历?是在大项目里靠 TS 稳如老狗,还是在小项目里被配置逼疯?如果试过 JSDoc,欢迎说说你的体验;没试过的话,要不要下次开新项目时试一把?评论区等你聊~
js未来可能会退出历史舞台,ts能编译成js,改下编译器肯定能编译成二进制程序,等ts生态成熟,这是必然的发展趋势