【TypeScript和ES6的区别 –
TypeScript开发教程】上一章TypeScript教程请查看:从JavaScript项目迁移到TypeScript项目
TypeScriptTypeScript是一种开源的纯面向对象的编程语言。它是一个强类型的JavaScript超集,可以编译成纯JavaScript。TypeScript是由微软在Apache 2许可下开发和维护的。它不是直接在浏览器上运行的,它需要一个编译器来编译和生成JavaScript文件。TypeScript源文件为”
.ts”扩展名,我们可以使用任何有效的”.js“文件重命名为”.ts”文件,TypeScript是带有一些附加特性的ES6 JavaScript版本。
TypeScript历史
安德斯·海尔斯伯格开发了JavaScript,它于2012年10月1日首次向公众推出。经过微软两年的内部开发,新版TypeScript 0.9于2013年发布。TypeScript的当前版本是TypeScript 3.4.5,于2019年4月24日发布。
ES6ECMAScript (ES)是由ECMA international标准化的脚本语言规范。它是为了标准化JavaScript而创建的,ES脚本语言包含许多实现,其中最流行的是JavaScript,开发人员主要使用ECMAScript编写万维网(WWW)的客户端脚本。
ECMAScript标准的第六版是ECMAScript6或ES6,后更名为ECMAScript 2015。这是对JavaScript语言的一个重大改进,它允许我们为复杂的应用程序编写程序。它添加了许多旨在简化大型软件开发的特性。最常见的ES6网络浏览器是Chrome和Firefox,一个置换器将基于ES6的代码转换成支持许多浏览器的ES5。TypeScript是一个编译器,Grunt、Gulp和Babel是其他一些编译模块的编译器。因此,TypeScript支持ES6。
ES6历史
JavaScript由Brendan Eich于1995年5月引入。它最初叫做Mocha,网景公司创始人马克·安德森选择了这个名字,后来改名为LiveScript。与此同时,Sun Microsystems拥有JavaScript的商标。1995年12月,网景获得了商标许可,并将其重新命名为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。
JavaScript VS ES6
文章图片
TypeScript | ES6 | |
定义 | TypeScript是一种免费的、开源的、纯面向对象的编程语言。它是由微软开发和维护的。 | ES6是ECMAScript (ES)的一个版本,它是由ECMA international标准化的脚本语言规范。 |
解释 | Typescript是为了消除开发错误。 | ES6在开发时间上比较灵活。 |
数据类型 | TypeScript支持所有原始数据类型。 | ES6不支持所有数据类型。 |
特性 | TypeScript包含泛型和类型注释、推理、枚举和接口等特性。 | ES6不支持这些特性。 |
范围 | Typescript有三种作用域。 1. 全局作用域 2. 类作用域 3.局部作用域 | ES6有两个作用域。 1. 全局作用域 2. 局部作用域 |
决策 | 1. if语句 2. if – else语句 3. else… if和嵌套if语句 4. switch语句 | 1. if语句 2. if – else语句 3.else- if/嵌套if语句。 4. switch?case语句 |
模块 | TypeScript模块有两种类型: 1. 内部 2. 外部模块 | 我们可以将ES6模块分为两类: 1. 导入一个模块 2. 输出模块 |
循环 | Typescript和ES6都有相同的循环。 1. 明确的 2. 无限 | Typescript和ES6都有相同的循环。 1. 明确的 2. 无限 |
为什么要选择 | 开发者选择TypeScript: 类型安全javascript超集强大的类型系统,包括泛型和JS功能。为了兼容性,o与ES开发保持一致。结构化的子类型,而不是标称的子类型。编译时错误。以JavaScript开始和结束。 | 开发者选择ES6: es6代码比传统的JS更短模块系统标准化非常紧凑destructuring赋值 |
推荐阅读
- TypeScript和Flow的区别 – TypeScript开发教程
- 从JavaScript项目迁移到TypeScript项目 – TypeScript开发教程
- TypeScript项目构建工具合集 – TypeScript开发教程
- TypeScript环境声明 – TypeScript开发教程
- TypeScript鸭子类型(duck-typing) – TypeScript开发教程
- TypeScript日期对象 – TypeScript开发教程
- TypeScript装饰器用法详解 – TypeScript开发教程
- TypeScript使用泛型编程 – TypeScript开发教程
- TypeScript名称空间和模块的区别 – TypeScript开发教程