前端Js和Ts的选型那些事儿
序
本篇文章要比《谈谈架构那些事儿》要短很多,因为前端技术虽然五花八门,但是核心还是 javascript。
本文会结合实验室这十年的项目经验,以及开源这三年的百余家企业经验,还有身边一二线大厂、中型企业、小企业、国央企、政府科研院所等相关技术朋友的项目经验,还有“商业”、“成本”、“人员”、“团队”等其他方面的因素,来讲述这个选型;
一、背景与问题
SmartAdmin 提供了 javascript
和 typescript
双版本 供大家选择,那么肯定有人问,建议选择哪个呢?
已经在十多个项目上用了vue3 + typescript
,且每个项目的页面都在200个页面以上;
已经在几十个项目上用了vue3 + javascript
,且每个项目的页面都在200个页面以上;
故事: 这几年使用SmartAdmin的企业已经超过了百余家,出现过很多关于typescript
的有意思的故事,甚至身边的企业,朋友还出现过盲目用typescript
,为了typescript
而typescript
这种现象。
一、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的基础上添加静态类型定义构建而成。 如下图:
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 双版本 供大家选择,那么肯定有人问,建议选择哪个呢?
最终建议是:
联系我们
- 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
- 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
- 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
- AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大 拉你入群,一起学习 | 公众号 :六边形工程师 分享:赚钱、代码、生活 | 请 “1024创新实验室” 烩面里加肉 咖啡配胡辣汤,提神又饱腹 | 抖音 : 六边形工程师 直播:赚钱、代码、中医 |