抛弃 JS,使用 TypeScript

更新日期: 2019-05-31阅读: 2.8k标签: TypeScript

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

先说优点:

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

再说缺点:

没有。哈哈。


现在只会 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没」。

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

我们把实数分为三种类型:正数、负数和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 吧,它很快就是一线互联网公司面试加分项甚至必备项了。

作者:方应杭
来源:https://zhuanlan.zhihu.com/p/71699882


链接: https://fly63.com/article/detial/3962

用TypeScript弥补Elm和JavaScript之间的差距

近些日子,我使用了新语言编程,从JavaScript,切确地说是Elm,转成TypeScript。在本文中,我将继续深挖一些我非常喜欢的TypeScript特性。

Typescript 和 Javascript之间的区别

TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集,但是 TypeScript 与 JavaScript 之间又有什么样的区别呢?

Nerv_一款类 React 前端框架,基于虚拟 DOM 技术的 JavaScript(TypeScript) 库

Nerv_是一款由京东凹凸实验室打造的类 React 前端框架,基于虚拟 DOM 技术的 JavaScript(TypeScript) 库。它基于React标准,提供了与 React 16 一致的使用方式与 API。

TypeScript_TS系列之高级类型

交叉类型:将多个类型合并为一个类型、联合类型:表示取值可以为多种类型中的一种、混合类型:一个例子就是,一个对象可以同时做为函数和对象使用,并带有额外的属性、类型断言:可以用来手动指定一个值的类型

TypeScript 在 JavaScript 的基础上的改动

在做比较大的,多人合作的项目的时候,TypeScript会更加地适合,这得益于它的可读性,面向对象性以及易于重构的特点。但如果只是自己做小程序,不需要太多人参与的时候,JavaScript则会更加简单。

5分钟了解TypeScript

有两种方式安装TypeScript,如何创建第一个TypeScript文件,在TypeScript中,可以使用interface来描述一个对象有firstName和lastName两个属性,TypeScript支持JavaScript的新功能,其中很重要的一个功能就是基于类的面向对象编程

如何编写 Typescript 声明文件

使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的。有关TypeScript声明类型声明相关的目前就总结了这些比较常用的

谷歌为何会选用TypeScript?

谷歌在很早之前就张开双臂拥抱 Web 应用程序,Gmail 已经发布 14 年了。当时,JavaScript 的世界是疯狂的。Gmail 工程师不得不为 IE 糟糕的垃圾回收算法捏一把汗,他们需要手动将字符串文字从 for 循环中提取出来,以避免 GC 停顿

为什么要学习Typescript 语言呢?Typescript 开发环境安装

TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。

使用TypeScript两年后-值得吗?

差不多两年前,我在一个创业团队中开始了一个全新的项目。用到的全都是类似Microservices,docker,react,redux这些时髦的东西。我在前端技术方面积累了一些类似的经验

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!