TypeScript 和ES6之间的差异
TypeScript
TypeScript是一种开源的纯面向对象的编程语言。它是JavaScript的 超集 ,可以编译为纯JavaScript。TypeScript由 Microsoft 在 Apache 2 许可下开发和维护。它不能直接在浏览器上运行,需要编译器将其编译生成JavaScript文件。TypeScript源文件的扩展名是”.ts”。我们可以将任何有效的”.js”文件重命名为”.ts”文件来使用。TypeScript是JavaScript的ES6版本,具有一些附加功能。
TypeScript的历史
Anders Hejlsberg 开发了TypeScript。它首次在 2012年10月1日 对公众发布。在Microsoft内部开发了两年之后,2013年发布了TypeScript 0.9的新版本。当前版本的TypeScript是 TypeScript 3.4.5 ,发布于 2019年4月24日 。
ES6
ECMAScript (ES)是一种由 ECMA国际 标准化的脚本语言规范。它是为了标准化JavaScript而创建的。ES脚本语言包含许多实现,最流行的是JavaScript。开发人员主要使用ECMAScript进行 客户端脚本编写 的工作。
ECMAScript的第六个版本是ECMAScript 2015或ES6,它是对JavaScript语言的重大增强,允许我们编写复杂应用程序的程序。它添加了许多旨在使大型软件开发更容易的功能。最常见的ES6 Web浏览器是 Chrome 和 Firefox 。一个 转译器 将基于ES6的代码转换为许多浏览器都支持的 ES5 。TypeScript是一个转译器,Grunt、Gulp和Babel是其他一些编译模块的转译器。因此,TypeScript支持ES6。
ES6的历史
JavaScript由 Brendan Eich 于 1995年5月 引入。最初它被称为 Mocha ,这是由 Netscape 创始人 Marc Andreessen 选择的名字,后来改名为 LiveScript 。与此同时, Sun Microsystems 拥有JavaScript的商标。在 1995年12月 ,Netscape获得了商标许可,并将其重新命名为JavaScript。
在 1996 和 1997 之间,Netscape将JavaScript带到ECMA标准组织,以保持对该语言的规范。在 1997年6月 ,ECMA技术委员会39(TC39)成立,继续发展这门语言,最终推出 ECMA-262 Ed.1 。
JavaScript的第一个标准版本是ECMAScript 1,于 1997年6月 发布。一年后,ECMAScript 2发布,其中仅包含一些小的变化来保持JavaScript的平行ISO标准。在 1999年12月 ,ECMAScript 3发布,引入了许多流行的JavaScript功能。在 2009年12月 ,ECMAScript或ES6发布,并随后更名为ECMAScript 2015。
TypeScript vs. ES6
对比项 | TypeScript | ES6 |
---|---|---|
定义 | TypeScript是一种免费且开源的纯面向对象的编程语言。它由Microsoft开发和维护。 | ES6是ECMAScript(ES)的一个版本,它是由ECMA国际进行标准化的脚本语言规范。 |
解释 | TypeScript旨在消除开发错误。 | ES6在开发过程中相对更灵活。 |
数据类型 | TypeScript支持所有的原始数据类型。 | ES6不支持所有的数据类型。 |
特点 | TypeScript包含泛型和类型注释、推理、枚举和接口等特性。 | ES6不支持这些特性。 |
范围 | Typescript有三个作用域。 Global Scope Class Scope Local Scope |
ES6有两个作用域。 Global Scope Local Scope |
决策 | if 语句 if-else 语句 else…if 和嵌套 if 语句 switch 语句 |
if 语句 if-else 语句 else- if 梯子或嵌套 if 语句. switch?case 语句 |
模块 | TypeScript模块有两种类型: 内部模块 外部模块 |
我们可以用两种方式对ES6模块进行分类: 导入模块 导出模块 |
循环 | Typescript和ES6都有相同的循环: 确定 不定 |
Typescript和ES6都有相同的循环: 确定 不定 |
为什么选择 | 开发者选择TypeScript: Typesafe JavaScript superset 强大的类型系统,包括泛型和JS功能。 与ES开发的兼容性一致。 结构子类型,而不是名义子类型。< br / >编译时错误。 以JavaScript开始和结束。 |
开发者选择ES6: ES6代码比传统JS 模块系统标准化 极其紧凑 解构赋值 |
使用的公司 | 使用TypeScript的公司列表: Slack Asana Circle CIIntuit Swat.io Avocode |
使用ES6的公司列表如下: Slack StackShare eBay Asana Intuit Swat.io |