一文搞清JS、ES、TS的关系

3,140 阅读2分钟

前言

相信很多前端小伙伴都对ECMAScript,JavaScript,TypeScript这几个词相当熟悉,可以说是我们工作的核心技术,但如果具体问起来这三者到底是什么关系,有什么区别,恐怕很多小伙伴和小黑一样,很难对其进行准确的描述,所以小黑决定和大家一起彻底搞明白他们的关系与区别

20200923-175932-0985.png

三者关系

ECMAScript

ECMAScript,即ECMA-262定义的语言,并不局限于Web浏览器。事实上,这门语言没有输入和输出之类的方法。

ECMA-262将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言。如果不涉及浏览器的话,ECMA-262在基本的层面,它描述这门语言的如下部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象

ECMAScript只是对实现这个规范描述的所有方面的一门语言的称呼,其实也可以理解为一个语言标准,JavaScript实现了ECMAScript,而Adobe ActionScript同样也实现了ECMAScript,只要你想,也可以构建一门脚本语言如XXScript来实现ECMAScript

JavaScript

虽然JavaScriptECMAScript在平时使用时基本上是同义词,但JavaScript远远不限于ECMA-262所定义的哪些部分。完整的JavaScript实现包含以下几个部分:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

可以理解为ECMAScript是形成JavaScript语言基础的脚本语言,再加上DOMBOM构成了完整的JavaScript实现

TypeScript

TypeScriptJavaScript的超集,添加了可选的静态类型系统、很多尚未正式发布的ECMAScript新特性(如装饰器)等,最终会被编译为JavaScript代码。

小结

如果用三句话概括他们的关系,那就是,ECMAScript是标准语言,JavaScriptECMAScript的实现,TypeScriptJavaScript的超集。

小黑水平有限,如有不足与错误之处,敬请赐教!