一文搞清JS、ES、TS的关系
前言
相信很多前端小伙伴都对ECMAScript
,JavaScript
,TypeScript
这几个词相当熟悉,可以说是我们工作的核心技术,但如果具体问起来这三者到底是什么关系,有什么区别,恐怕很多小伙伴和小黑一样,很难对其进行准确的描述,所以小黑决定和大家一起彻底搞明白他们的关系与区别
三者关系
ECMAScript
ECMAScript
,即ECMA-262
定义的语言,并不局限于Web浏览器。事实上,这门语言没有输入和输出之类的方法。
ECMA-262
将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言。如果不涉及浏览器的话,ECMA-262
在基本的层面,它描述这门语言的如下部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
ECMAScript
只是对实现这个规范描述的所有方面的一门语言的称呼,其实也可以理解为一个语言标准,JavaScript
实现了ECMAScript
,而Adobe ActionScript
同样也实现了ECMAScript
,只要你想,也可以构建一门脚本语言如XXScript
来实现ECMAScript
JavaScript
虽然JavaScript
和ECMAScript
在平时使用时基本上是同义词,但JavaScript远远不限于ECMA-262所定义的哪些部分。完整的JavaScript实现包含以下几个部分:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
可以理解为ECMAScript
是形成JavaScript
语言基础的脚本语言,再加上DOM
和BOM
构成了完整的JavaScript
实现
TypeScript
TypeScript
是JavaScript
的超集,添加了可选的静态类型系统、很多尚未正式发布的ECMAScript
新特性(如装饰器)等,最终会被编译为JavaScript
代码。
小结
如果用三句话概括他们的关系,那就是,ECMAScript
是标准语言,JavaScript
是ECMAScript
的实现,TypeScript
是JavaScript
的超集。
小黑水平有限,如有不足与错误之处,敬请赐教!