1024创新实验室-公告

助力抖音1000个粉丝,开播写代码🎉🎉

打开【抖音APP】-点击【左上角侧边栏】-【点击扫一扫】-【进行关注】🎉🎉

和1024创新实验室一起,热爱代码,热爱生活,永远年轻,永远前行🎉🎉


Skip to content

前端Js和Ts的选型那些事儿

本篇文章要比《谈谈架构那些事儿》要短很多,因为前端技术虽然五花八门,但是核心还是 javascript。
本文会结合实验室这十年的项目经验,以及开源这三年的百余家企业经验,还有身边一二线大厂、中型企业、小企业、国央企、政府科研院所等相关技术朋友的项目经验,还有“商业”、“成本”、“人员”、“团队”等其他方面的因素,来讲述这个选型;

一、背景与问题

SmartAdmin 提供了 javascripttypescript 双版本 供大家选择,那么肯定有人问,建议选择哪个呢?
已经在十多个项目上用了vue3 + typescript,且每个项目的页面都在200个页面以上;
已经在几十个项目上用了vue3 + javascript,且每个项目的页面都在200个页面以上;

故事: 这几年使用SmartAdmin的企业已经超过了百余家,出现过很多关于typescript的有意思的故事,甚至身边的企业,朋友还出现过盲目用typescript,为了typescripttypescript这种现象。

一、typescript

1.1、简介

官方定义:

TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open source. TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.

翻译过来:TypeScript 是 JavaScript 的一个超集,可以编译为纯 JavaScript ,在任何浏览器、集群(服务器)、操作系统上面都可以运行,而且还开源。通过在JavaScript的基础上添加静态类型定义构建而成。 如下图: typescript

1.2、ts的本质

简单而言,ts就是它让js有类型了,且提供了其他更好用的方法,但ts的核心还是让js有类型,所以关注点需要从 js和ts的选型上面,转移到:“我们的项目,是否需要强制类型检查上?”

强制类型检查的好处,列举下:

  • 不怕人员变动,因为有类型,好维护很多
  • 变量如果能确定是什么类型,开发人员心里要踏实的多,写出来的程序更有信心
  • 能为语言带来各种各样的工具,比如自动补全,静态检查,可靠的重命名变量名等
  • 人生苦短,多用代码提示
  • 因为有类型约束,团队开发就不会随意放肆,更能做到整齐划一

坏处:

  • 稍微多了个代码量而已
  • 写的没那么随意,会有类型处处受限

这是typescript的类型的 好坏之分,通过以上这些点,你会发现,这些坏处在好处面前一份不值。

二、问题

阅读到这里,你会觉得,那就不用想了,直接用typescript就好了。笔者最开始的时候也是这也认为的,但是后来随着使用越来越多,发现不是那么回事。

有个很有趣的现象,在认识的百余家企业中,有90%左右的企业在typescript项目中在有如下几个有意思的特征:

  • 这些企业近两年所有的项目都是typescript,但是在vscode中都会有类型检查警告
  • 几乎所有的开发人员都会在vscode关闭 typescript的警告提醒
  • 项目中大量的出现any类型和不写类型
  • api接口请求参数或者返回的对象、lib方法类库等等不使用interface封装且变量、方法没有任何类型
  • 最基本的方法参数没有类型、返回值没有类型,一切随缘,想起来的就加上类型,想不起来就不加了
  • 项目一开始会有强制要求类型,项目稍微忙一些,算了以满足业务为前提,先不加了,于是后面就几乎都不加类型了

通过上面的问题,项目开始使用到ts是为了使用类型来帮助把项目写好,但是在项目的实际使用中,味道越来越变了,一开始第一个人在项目中开始不使用类型,那么就会有第二个人,第三个人...第n个人不再使用类型,最终typescript的类型检查好处全无--《破窗效应》
这就是实验室了解到的企业的真实现状,90%的企业虽然在刚开始搭建项目的时候是typescript项目,但是最终沦为和写js项目一模一样。

破窗理论:一个房子如果窗户破了,没有人去修补,隔不久,其它的窗户也会莫名其妙地被人打破;一面墙,如果出现一些涂鸦没有被清洗掉,很快的,墙上就布满了乱七八糟、不堪入目的东西;一个很干净的地方,人们不好意思丢垃圾,但是一旦地上有垃圾出现之后,人就会毫不犹疑地抛,丝毫不觉羞愧。

三、最终建议

SmartAdmin 提供了 JS 和 TS 双版本 供大家选择,那么肯定有人问,建议选择哪个呢?
最终建议是:


联系我们

1024创新实验室-主任:卓大,混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024创新实验室 致力于成为中原领先、国内一流的技术团队, 以AI+数字化为驱动,用技术为产业互联网提供无限可能, 业务如下:
  • 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
  • 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
  • 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
  • AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大
拉你入群,一起学习
公众号 :六边形工程师
分享:赚钱、代码、生活
请 “1024创新实验室”
烩面里加肉
咖啡配胡辣汤,提神又饱腹
抖音 : 六边形工程师
直播:赚钱、代码、中医