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

一、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项目一模一样。

**同时,这也是当前业内前端`typescript`项目的一个很滑稽现状,表面上是`typescript`项目,但是代码里到处是 `any`或者不写类型, 但是仍然对外界说 “ 嗯,我在用ts,ts很不错!”**

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

三、最终建议

最终建议是:

  • 如果 “活少人多” ,且 “长期维护” 的话 (重点:活少人多),建议选择 ts !
  • 如果 “活多人多”,或者 “活多人少” ,还是选择js吧,把代码写的漂亮一些,参考:《Vue3规范,也许并不比typescript差!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

by__csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值