TypeScript系列(一)初识 TypeScript

javascript/jquery

浏览数:86

2020-7-16

AD:资源代下载服务
前言

2019年,TypeScript火遍大街小巷,越来越多的程序员希望在新的项目中学习和使用TypeScript,从下图中就可以看出他的受欢迎程度。下图是StackOverflow的数据

Developer Survey Results 2019

说TypeScript一定离不开JavaScript,JavaScript本身就是一门优秀且强大的编程语言。以至于有著名的Atwood定律– 一切能用 JavaScript 实现的东西,都将会用 JavaScript实现

那可能就有人会问了,既然JS这么牛逼,为什么TypeScript越来越火,甚至受欢迎程度都要超过JavaScript了呢。

诶。好问题,那么它到底是何方神圣,有什么魔力,能让大家这么喜欢,让我们来一探究竟。

定义

官网定义:TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript。编译出来的 JavaScript 可以运行在任何浏览器上。TypeScript 编译工具可以运行在任何服务器和任何系统上。TypeScript 是开源的。

TypeScript诞生于2012年10月1日,是微软的亲儿子,由微软开发并维护,并完全开源的编程语言。

为什么会出现TypeScript

简单来说,因为JavaScript设计之初就有一些缺陷,缺少一些构建大型应用必备的基础特性。
比如:

  • 到现在也没解决的类型问题。
  • 结构化机制(类、模块、接口等等)
  • 等等

这就导致了一些问题,比如代码可读性比较差,后期维护成本高,重构也比较麻烦。因为缺乏类型检查,更容易出现低级错误。而TypeScript从名字上就能看出,他最大的特点之一就是类型化,可以在代码编译期间提供静态类型检查,可以更早的发现代码中出现的错误,可以省去很多debug的时间。

这个时候我们的老朋友该出场了==Uncaught TypeError==

有没有很熟悉,虽然说这个是很低级的错误,一般情况下是不会出现的(嗯,假装我是老司机)。但是一旦不小心出现了,忘记传值,系统并不会告诉你,一定要等到执行阶段才会发现。所以当项目代码多起来,复杂起来,就难免会出现这样的情况。就像这个demo里的一样,我在写的时候压根不会出现任何异常,基本要到运行的时候才能发现,最糟糕的是到如果线上才发现,那就麻烦了。

很多时候可能有人会发出这样的感叹。哎呀!这个地方居然会写错了,不应该啊。之前就有个同事因为类似的错误被起哄请喝奶茶。啊!多么痛的领悟~~~。

很多人对JavaScript这些缺点不满意,所以前有狼(VBScript,Coffee),后有虎(Dartjs, WebAssembly),他们都想取而代之.但是TypeScript不一样,他是站在巨人的肩膀上所以为了弥补JS的缺陷,TypeScript增加了类型约束。我感觉不要把TypeScript认为是一门新的语言,把它看做是JavaScript的一个超集,一个提升JavaScript代码质量的工具。TypeScript 的语法设计首先考虑的就是兼容 JavaScript,毕竟.js 文件可以直接重命名为 .ts 。

TypeScript就不会出现上面那种情况。
还在你写代码的过程中就会给你错误提示。成功的第一时间就能发现错误。扼杀在摇篮里的bug,才不会兴风作浪。-_-。

简而言之,TypeScript就是为了解决JavaScript的一些缺陷和痛点而诞生的,但是又完全兼容JavaScript,并且新的JavaScript特性在TypeScript中都是支持的。

TypeScript的特点


具有非常好的包容性,对于JavaScript并不是推倒重来,对于熟练掌握JavaScript的同学,肯定能比较快的适应并喜欢上它。

同为微软的亲儿子的Visual Studio Code本身就是TypeScript写的,对TypeScript极其友好。


TypeScript在实现新特性的同时,始终是兼容JavaScript,并且和最新的JavaScript标准保持同步或者领先。

我接触TypeScript是因为我们前年做Angular项目,和Ionic项目。那时候也许还没有现在这么吸引大家的关注。目前TypeScript已经在很多地方被应用,比如重构的vue3,Node中Nest。UI组件中Ant Design。以及开发神器VSCode等等。

所以,前面关于那句JS的定律可以改写为:一切能用 JavaScript 实现的东西,都将会用 JavaScript实现

接下来的系列就让我们一步步来,了解并使用TypeScript吧。

作者:Kris