针对于ECMA5Script 、ECMAScript6、TypeScript的认识
什么是ECMAScript、什么又是ECMA?
Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织。1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
ECMAScript和JavaScript到底是什么关系?
很多初学者会感到困惑,简单来说,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开发实战。
针对于ECMA5Script 、ECMAScript6、TypeScript的认识的更多相关文章
- 6、什么是TypeScript、TypeScript的安装、转换为.js文件
1.什么是TypeScript (本人用自己的理解梳理了一下,不代表官方意见) TypeScript:Type+ECMAScript6 TypeScript是一种预处理编程语言,遵循es6标准规范,在 ...
- 什么是ECMAScript、什么又是ECMA?
转载:针对于ECMA5Script .ECMAScript6.TypeScript的认识 什么是ECMAScript.什么又是ECMA? Ecma国际(Ecma International)是一家国际 ...
- ECMAScript6 VS TypeScript
如果你真正使用过Typescript你会发现他其实是javascript的超集, 这是一个非常简洁的描述 ,之所以称之为Typescript,正是Type一词的表述(强类型),可不仅仅是有一个Clas ...
- 转职成为TypeScript程序员的参考手册
写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...
- CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- CSS3与页面布局学习笔记(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- 浅谈TypeScript
TypeScript为JavaScript的超集(ECMAScript6), 这个语言添加了基于类的面向对象编程.TypeScript作为JavaScript很大的一个语法糖,本质上是类似于css的l ...
- TypeScript:类(Classes)
返回TypeScript手册总目录 传统的Javascript关注的是函数(function)和基于原型(prototype-based)的继承作为构建可重复使用组件的基本方式,但是与更舒服地使用面向 ...
- TypeScript学习指南--目录索引
关于TypeScript: TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程. TypeS ...
随机推荐
- Prim && Kruskal
Electrification Plan Prim #include<iostream> #include<cstring> using namespace std; cons ...
- 百度之星资格赛 调查问卷 bitset模板(直接将字符串转化成二进制数组并可以计算出十进制值)
Problem Description 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去 ...
- lightoj 1245 Harmonic Number (II)(简单数论)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1245 题意:求f(n)=n/1+n/2.....n/n,其中n/i保留整数 显 ...
- Linux音频编程(一)ALSA介绍
Linux下的音频编程中有OSS和ALSA,本篇文章将对ALSA进行相关介绍.ALSA提供一系列基于命令行的工具集,比如混音器(mixer),音频文件播放器(aplay),以及控制特定声卡特定属性的工 ...
- 漫谈Spring Security 在Spring Boot 2.x endpoints中的应用(一)
Spring Boot 2.x极大简化了默认的安全配置,并不是说有很多安全相关的配置,现在你只需要提供一个WebSecurityConfigurerAdapter继承类这样一个简单的操作,Spring ...
- 云开发数据库VS传统数据库丨云开发101
云开发数据库与传统数据库的不同 在小程序·云开发中,最核心的便是三大组件:数据库.云存储和云函数,从今天开始,我们将开始隔日更的专栏文章,云开发101,在第一周,我们将从最最核心的数据库开始说起. 云 ...
- mybatis_plus插件——生成器
最近在学习mybatis框架,虽然已经简化了一些Dao代码,但是还想更上一层楼吗?不再被基本的pojo层,controller层,service层,dao层基本重复代码所困恼吗?这里,让我们来学习一下 ...
- centos7上部署dubbo管理控制台dubbo-admin
centos7上部署dubbo管理控制台dubbo-admin 1 准备工作 服务器:系统centos7, 内存4G, 存储60G, ip 192.168.159.128 软件环境: 安装有jdk1. ...
- 同步FIFO design and IP level verification
一.前言 应聘IC前端相关岗位时,FIFO是最常考也是最基本的题目.FIFO经常用于数据缓存.位宽转换.异步时钟域处理.随着芯片规模的快速增长,灵活的system verilog成为设计/验证人员的基 ...
- 【linux】【docker】docker私服安装
前言 系统环境:Centos7.jdk1.8 docker私服:可以把项目通过dockerfile文件build成docker镜像,供其他环境拉取.部署在本地,私有化. 安装 dockerHUB私服 ...