抛弃 JS,使用 TypeScript

最近几个月我已经全面抛弃 JavaScript,彻底使用 TypeScript 进行前端开发(只在上课的时候用到 JS)。前端

先说优势:面试

  1. bug 显著减小,以前会遇到的 xxx 为空的问题几乎不会出现了,类型相关 bug 直线减小。
  2. 应用更可控,当你须要约束某些代码的时候,用类型就能很简单地作到,好比 React 里强制写 diaplayName 方便调试。
  3. 查文档更方便,之前要打开浏览器看文档,如今直接查看定义就基本明白了。

再说缺点:typescript

没有。哈哈。浏览器

如今只会 JS 的前端要怎么办?

不用慌,TS 的代码跟 JS 差很少,你学完 JS 后,只须要学习一下类型声明就能够掌握 TS 了。框架

若是你公司的项目目前只支持 JS,也没有关系,只须要加一个 ts-loader 或者 awesome-typescript-loader 就能提供 TypeScript 支持,TS 能够和 JS 共存哦。模块化

而后你就能够逐步用 TS 代替 JS,实现完美过渡。单元测试

为何 TypeScript 是好的?

若是你如今尚未开始学习 TS,确定是由于对 TS 有所顾虑。去问问用了 TS 的前端感受怎么样吧,基本没有一个说后悔的。因此这种顾虑是彻底没有必要的。学习

那么 TS 为何这么好呢?接下来咱们从理论上解释一下。测试

  1. 写代码最怕什么?代码出错,也就是 bug。
  2. 如何避免 bug?运行代码看结果,或者添加各类测试。
  3. 如今前端并不流行单元测试,因此只能运行代码看结果(好比刷新页面,而后用鼠标点点点,看是否能运行成功)
  4. 但当你的前端应用很是大的时候,你不可能每次改代码以后去全部页面上点一遍,由于页面太多了。
  5. 因此前端选择模块化,让一次代码改动影响的页面尽可能少。可是即便这样,你依然没法经过鼠标点击测试来运行全部代码,由于你可能还须要测试多种不一样的帐户。
  6. 这样作太麻烦了。有没有什么办法能让我快速知道「代码有bug没」

这是一个重要的问题:有没有什么办法能让我快速知道「代码有bug没」。lua

为了说明类型是如何解决这个问题的,咱们先来介绍一种最简单的类型:正负数。

咱们把实数分为三种类型:正数、负数和0。

而后看下面这个等式:

28937829 * -1239282 = 35862130598778
复制代码

聪明的你一眼就看出这个等式不对。为何?由于「正数」乘以「负数」必然获得「负数」。因此咱们根本不用运行这个乘法,就知道这个结果不对。

这就是类型好处。

类型能让你「大概」知道代码对不对

TS 就是在 JS 上加上类型声明,这样咱们就能知道代码是否「大概」正确。

另外,这种方式速度很是快,快到你只要修改代码,TS 就能告诉你代码是否「大概」正确。

从而避免不少 bug。

你只须要稍微花一点点时间,就能让代码质量提高,何乐不为呢?

据说 TS 只适合大型项目?

错,只要是有 bug 的 JS 项目,均可以用 TS 替代 JS 从而减小 bug。

因此不管是小项目仍是大项目,都有必要使用 TS。

万一过几年 TS 不火了呢?

这个问题问得好,前端发展这么快,不少东西都是火几年就不火了,致使后期想招人维护都难(好比 AngularJS 1)。

可是 TS 不存在这个问题。为何?

由于目前前端三大框架全都支持 TS 了:

  1. Angular 很早就支持 TypeScript 了,并且还把 JS 从本身的名字里去掉了:AngluarJS -> Angular。甚至连 Angular 入门文档里的例子都默认是 TS 版本的。用 JS 写 Angular 不是不能够,只是会显得很「奇怪」,明明有更好的 TS,为何会有人用 JS。
  2. Vue 3.0 用 TS 重写了,为了更好的支持 TS,甚至放弃了本来计划推出的 class API。
  3. React 一开始对 TS 的支持也是很是丝滑。不过 React 并无强绑定到 TS。

若是有一年 TS 不火了,上面框架的维护者会提早为你想好升级方案的,你就没必要过多担忧了。

毕竟背靠大树好乘凉。

JS 岂不是白学了?

No No No,TS 里面包含了 JS 的全部语法,因此你在用 TS 的时候,实际上仍是在用 JS。

也就是说 JS 的魂还在,咱们只是再也不单独使用 JS 了。

结论

快点学 TypeScript 吧,它很快就是一线互联网公司面试加分项甚至必备项了。

反驳

若是你有什么须要反驳的,欢迎反驳,可是请给出充足的理由,无心义的站队和灌水评论会被我删掉,这样咱们的讨论才会更有意义。

没有看完文章就评论的,也会被删除。