TypeScript 简介与优势

本节首先介绍了 TypeScript 与 JavaScript 的关系,梳理清楚 TypeScript、JavaScript、ECMAScript 这三个名词所代表的具体含义。另外通过三个方向的阐述说明了为什么要使用 TypeScript,以及现在学习 TypeScript 的必要性。

0. 写在前面

TypeScript 不是一门全新的语言,TypeScript 是 JavaScript 的超集,它对 JavaScript 进行了一些规范和补充。学习本教程,请务必拥有 JavaScript 基础。没有 JavaScript 基础的同学,请先学习相关 JavaScript 相关基础知识。

1. TypeScript 与 JavaScript

1.1 TypeScript 简介

官方定义:
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open source.

  • TypeScript 是 JavaScript 的超集,它可以编译成纯 JavaScript。
  • TypeScript 基于 ECMAScript 标准进行拓展,支持 ECMAScript 未来提案中的特性,如装饰器、异步功能等。
  • TypeScript 编译的 JavaScript 可以在任何浏览器运行,TypeScript 编译工具可以运行在任何操作系统上。
  • TypeScript 起源于开发较大规模 JavaScript 应用程序的需求。由微软在2012年发布了首个公开版本。

从以上特性中可以看到,TypeScript 与 JavaScript 、ECMAScript 有着非常深入的联系。在详细介绍 TypeScript 之前,先来简单了解一下 ECMAScript 与 JavaScript的发展。

1.2 ECMAScript

ECMA International: 一个制定技术标准的组织。

ECMA-262:由 ECMA International 发布。它包含了脚本语言的标准。

ECMAScript: 由 ECMA International 以 ECMA-262 和 ECMA-402 规范的形式进行标准化的。

JavaScript: 通用脚本编程语言,它遵循了 ECMAScript 标准。 换句话说,JavaScript 是 ECMAScript 的方言。

通过阅读 ECMAScript 标准,你可以学会怎样实现一个脚本语言;而通过阅读 JavaScript 文档,你可以学会怎样使用脚本语言编程。

2019年6月,ECMA-262 第10版定义了 ECMAScript 2019 通用编程语言。

1.3 JavaScript版本

说 JavaScript 的版本,实际上就是说它实现了 ECMAScript 标准的哪个版本

2. 为什么要用 TypeScript

2.1 静态类型

我已经熟练使用 JavaScript,为什么要用 TypeScript 呢?

回答这个问题前,先来看看下面这些 JavaScript 中的常见错误:

  • Uncaught TypeError: Cannot read property
  • TypeError: ‘undefined’ is not an object
  • TypeError: null is not an object
  • TypeError: Object doesn’t support property
  • TypeError: ‘undefined’ is not a function
  • TypeError: Cannot read property ‘length’

仔细看下不难发现,这些错误大都是一些比较初级的类型错误。

JavaScript 只会在 运行时 才去做数据类型检查,而 TypeScript 作为静态类型语言,其数据类型是在 编译期间 确定的,编写代码的时候要明确变量的数据类型。使用 TypeScript 后,这些低级错误将不再发生。

2.2 三大框架支持

我们学习一门新技术会关心它的生命力问题,如果这门技术在较短时间内就要被淘汰,那花费大量的时间学习也是不划算的。TypeScript 能够保持长久生命力的另一个原因,就是统治前端的三大框架对 TypeScript 的支持。

  • Angular 是 TypeScript 最早的支持者,Angular 官方推荐使用 TypeScript 来创建应用。
  • React 虽然经常与 Flow 一起使用,但是对 TypeScript 的支持也很友好。
  • Vue3.0 正式版即将发布,由 TypeScript 编写。

从国内的氛围来看,由前端三大框架引领的 TypeScript 热潮已经涌来,很多招聘要求上也都有了 TypeScript 的身影。

2.3 兼容 JavaScript 的灵活性

TypeScript 虽然严谨,但没有丧失 JavaScript 的灵活性,TypeScript 非常包容:

  • TypeScript 通过 tsconfig.json 来配置对类型的检查严格程度。
  • 可以把 .js 文件直接重命名为 .ts
  • 可以通过将类型定义为 any 来实现兼容任意类型。
  • 即使 TypeScript 编译错误,也可以生成 JavaScript 文件。

这里先简单介绍下 any 类型,后续会详细讲解。比如一个 string 类型,在赋值过程中类型是不允许改变的:

let brand: string = 'imooc'
brand = 1  // Type '1' is not assignable to type 'string'.ts(2322)

如果是 any 类型,则允许被赋值为任意类型,这样就跟我们平时写 JavaScript 一样了:

let brand: any = 'imooc'
brand = 1

基于上面这些特点,一个熟悉 JavaScript 的工程师,在查阅一些 TypeScript 语法后,即可快速上手 TypeScript,加油!

3. 小结

本节主要介绍了:

  • TypeScript 与 JavaScript 的关系,知道了 TypeScript 是 JavaScript 的超集,可以支持 ECMAScript 的各种新特性。
  • 从三个方面论述了“为什么要用 TypeScript”,从中可以看出 TypeScript 已经是当前大前端技术栈中非常重要的一环了。

TypeScript 简介与优势相关推荐

  1. Redis简介及优势

    Redis简介及优势 Redis特点 Redis优势 Redis与其他key-value存储有何不同 Redis 是一款完全开源且高性能的key-value数据库 Redis特点 Redis是基于内存 ...

  2. thinkphp简介与优势。

    简介 ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开 ...

  3. Docker之docker简介及其优势

    什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术, ...

  4. TypeScript简介

    TypeScript的两个最重要的特性:类型系统.适用于任何规模 TypeScript的特性 TypeScript是静态类型 静态类型设置编译阶段就行确定每个变量的类型,这种语言的类型错误往往导致语法 ...

  5. TypeScript 简介

    TypeScript是JavaScript类型的超集(当前我们处于ES5),它可以编译成纯JavaScript,其可以编译出纯净. 简洁的JavaScript代码,并且可以运行在任何浏览器上.Node ...

  6. Pathon简介和优势

    Python由Guido于1989年年底开发,Python是基于ABC教学语言的.ABC这种语言非常优美和强大,是专门为非专业程序员设计.但是,ABC语言并没有获得广泛的应用,Guido认为是非开放造 ...

  7. 什么是TypeScript?为什么我要用它代替JavaScript? [关闭]

    本文翻译自:What is TypeScript and why would I use it in place of JavaScript? [closed] Closed . 已关闭 . This ...

  8. 喜欢 TypeScript 的人,一点都不比 Python 少

    ‍‍‍‍‍‍‍‍‍编者按:Python 在数据科学领域的地位显而易见是难以被撼动的,它拥有着太多太多的优势,然而在某些领域,TypeScript 或许是更好的选择. 原文标题:Why develope ...

  9. TypeScript基础教程

    一.TypeScript简介 1. 特性 Typescript是以JavaScript为基础构建语言 一个JavaScript的超集 不能被JS解析器直接执行 扩展了JS,并添加了类型 TS.ES6. ...

最新文章

  1. java调用python的函数_java如何调用python的.py文件,以及如何执行里面的函数,和创建...
  2. MySQL-proxy实现读写分离详细步骤
  3. Python 第一篇:python简介和入门
  4. React基础篇(五)css样式的使用
  5. android光标属性设置,光标设置、hint设置
  6. 【优化】如何检测移动端 CPU 以及内存占用率
  7. javaScript数据类型转换—显式转换(二)
  8. python numpy模块玩转矩阵与科学计算
  9. ie登录显示登录到ftp服务器,用IE登录FTP服务器怎么消除记住的密码
  10. java sigar cpu使用率_sigar相关-单个进程占CPU百分比
  11. Mac OS X 下 Eclipse 安装 SVN 插件 subclipse 及JavaHL 方法
  12. dB、dBFS、dBV、dBu...都是啥啊..
  13. 使用阿帕奇服务器配置多个网站站点的方法
  14. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、自定义修改描述性统计参数输出自定义统计量
  15. Win系统 - 如何清除冰点还原精灵 Deep Freeze 密码?
  16. 煤矸石无线测温系统项目背景
  17. iOS 应用签名原理
  18. luogu 3374
  19. 使用python异步框架aiohttp从NASA抓取火星图片
  20. WPF TextBlock自定义内容_se7en3_新浪博客

热门文章

  1. C# winform 上传文件 (多种方案)
  2. js 为表格增加行 动态
  3. git-ssh 配置和使用
  4. WordPress基础教学:绝对必装的JetPack外挂
  5. 【漫画详解】用iframe障眼法,骗取用户点击
  6. Linux Nano基础指南
  7. Redis操作命令(一)
  8. 华为机试——句子逆序
  9. Form窗体的属性与值 1123
  10. 吃货联盟 项目日记 0922