什么是ECMAScript、什么又是ECMA?javascript
Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织。1994年以前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。由于计算机的国际化,组织的标准牵涉到不少其余国家,所以组织决定更名代表其国际性。现名称已不属于首字母缩略字。java
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)经过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用普遍,它每每被称为JavaScript或JScript,但实际上后二者是ECMA-262标准的实现和扩展。web
ECMAScript和JavaScript究竟是什么关系?typescript
不少初学者会感到困惑,简单来讲,ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现。编程
什么是ECMAScript5,什么是ECMAScript6呢?浏览器
有人总认为ECMAScript5就是所谓的ECMAScript2015(是由于都有个5么?),实际上是不对了,早在2009年12月份ECMA公司就发布了ECMAScript5。服务器
而咱们所说的ECMAScript6是2015年6月份发布的,是JavaScript语言的下一代标准,官方称ECMAScript2015,Mozilla公司将在这个标准的基础上,推出JavaScript 2.0。框架
ECMAScript6是继ECMAScript5以后的一次主要改进,语言规范由ES5.1时代的245页扩充至600页。ECMAScript6的目标是使得JavaScript语言能够用来编写大型的复杂的应用程序,成为企业级开发语言。ECMAScript6增添了许多必要的特性,例如:模块和类,以及一些实用特性,例如Maps、Sets、Promises、生成器(Generators)等。尽管ECMAScript6作了大量的更新,可是它依旧彻底向后兼容之前的版本,标准化委员会决定避免由不兼容版本语言致使的“web体验破碎”。结果是,全部老代码均可以正常运行,整个过渡也显得更为平滑,但随之而来的问题是,开发者们抱怨了多年的老问题依然存在。编程语言
使人不爽的是目前没有一款彻底支持ES6的JavaScript代理(不管是浏览器环境仍是服务器环境),因此咱们真正使用ECMAScript6开发者须要将ECMAScript6代码转译为ECMAScript5代码。函数
什么是TypeScript?
TypeScript是一种由微软开发的自由和开源的编程语言。注意:官方给出的解释TypeScript是一种编程语言,请你们记住了。
它是JavaScript的一个超集,并且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TypeScript扩展了JavaScript的语法,因此任何现有的JavaScript程序能够不加改变的在TypeScript下工做。TypeScript是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性。它与JavaScript相比进步的地方包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增长开销。 而JavaScript只是一个脚本语言,并不是设计用于开发大型 Web 应用,JavaScript 没有提供类和模块的概念,而TypeScript扩展实现了这些特性。
TypeScript 最大的特色就是类型化,所以才叫作TypeScript。比起弱类型的JavaScript,类型化的TypeScript显得更加容易维护。
这里少插一句,有人认为TypeScript有一个优势就是要通过TSC编译,他在编译期可以知道一些错误,这个难道算优势吗?我竟无言以对,不论是使用TSC进行监听编译,仍是手动触发命令编译,仍是经过写Gulp脚本编译,其过程让人难以忍受(由于TSC和Ionic2提供的Gulp脚本我都使用过),好比说你正在写一个Class,写完以后想立刻看到效果,这个时候你发现你的CLI正在拼命地编译,好的时候会在3秒左右你能看到页面效果,设想一下,若是工程更巨大,你以为编译工程须要多久呢?
TypeScript要通过TSC编译并非它的优点,若是让微软选择它宁愿全部的宿主环境可以直接运行它,编译期间可以检查的错误无非是语法与依赖之类的错误,不表明真正运行的时候没有错误,我曾不少次在编译器无错误,在运行期间出现不少错误,这取决于你使用框架的机制和你业务逻辑的实现,如同你使用servlet写服务同样,编译期间没错就必定表明运行时不会出异常么?二者其实没有可比性,其实要通过TSC编译偏偏是TypeSciprt的一个缺点,在开发过程当中反而给咱们带来不少不便。
TypeScript和ECMAScript6的区别?
首先咱们都指望如今的宿主环境都可以直接运行ECMAScript6,我还没见过哪一个人说指望浏览器直接可以运行TypeScript,由于毕竟EXMAScript6是一个标准,而Typescript实现了ECMAScript6的特性,而且在此之上有进行扩展,也就是说Typescript有些特性并非ECMAScript6的规范,哪说两个是一个东西实际上是不对的,只能说明他们有些写法是相同的不表明是一个东西。正由于目前而言咱们如今的宿主环境都没法直接运行TypeScript和ECMAScript6,因此二者都须要进行编译器编译,而且目标语言都是Javascript,在咱们编写Typescript的时候是可使用javascript的,在我看来编译器大不了不编译那段javascript的代码对吧!因此说咱们在写Typescript的时候实际上是能够写ECMAScript6的,缘由很是简单你会使用TSC进行编译,那么你设想一下你写Typescript倒是用ECMA6的标准去编译,行么?如今你还认为二者是一个东西么?
若是你还不理解我就只能上代码了,好比咱们如今定义一个类:
使用ECMAScript6:
那么咱们使用TypeScript写呢:
甚至咱们为了方便,也能够写成
好了,今天有些晚了,一会还要洗衣服了,今天就说到这里,具体还须要小伙伴们看文档,由于没有什么比文档更权威的。下面是相关的网站,你们能够看一下:
ECMA6:http://www.ecma-international.org/ecma-262/6.0/
Typescript:https://www.typescriptlang.org/
请持续关注个人系列文章,Ionic2开发指南与Angular2开发实战。