001.TypeScript简介.md

摘要:
使用TypeScript的另一个巨大优点是它提供了正式且可验证的命名规则,这可以促进大型团队之间的协作。TypeScript基于世界上最好的编程语言专家提供的工作。不仅如此,Dojo2、Angular2和其他人也采用了TypeScript作为他们强烈推荐的第一语言。同时,一个新的ECMAScript规范也开始了。在正式命名为ECMAScript版本6之前,这个新标准最初被称为ES.Hharmony。

TypeScript是一门开源的,由微软开发维护的,发布于2012年10月的静态类型的语言;
他是ECMAScript的超集,支持JavaScript的所有语法和语义,并且在此基础之上提供了更多额外的特性,例如静态类型和更丰富的语法。

1. TypeScript的优点

1.1. 编译时类型检查

所有的动态语言,包括JavaScript,其在编写过程中一些拼写错误,直到运行时才能发觉,即使我们编写大量单元测试于事无补。TypeScrip在这方面做了增强,其采用了静态代码分析技术,有自己的编译器,从而可以帮助我们发现这些错误,如果采用静态类型,TypeScript会帮助我们注意对象中的各种属性,如果发生了拼写错误,编译器会产生编译时错误来发出警告。
使用TypeScript的另一个巨大优点是:它提供了正式的、可验证的命名规则,从而可以方便大型团队之间的协作。我们恶意通过这种方式编写出易于理解的代码。

1.2. 文本编辑器和IDE的支持更好

相对于JavaScript这种动态语言来讲,TypeScript内置了使用元数据来给代码添加注解的特性,叫做类型注解,文本编辑器和IDE可以根据这些注解对我们的代码进行更好的静态分析,基于这一特性,可以提供更好的代码重构工具和自动完成功能,从而让我们在编写代码的时候效率更高、错误更少。

1.3. 他是JavaScript的超集

JavaScript(ES5、ES2015、ES2016)的所有特性TypeScript都支持,由于它基于最新版本的ECMAScript标准,所以我们可以利用这门语言所提供的最前沿的语法。

1.4. 支持可选的类型检查

如果由于某种原因我们不想显示定义变量和方法的类型,可以跳过类型定义。但是,请注意,这样就无法利用静态类型特性,也就无法利用前面说的那些优点了。

1.5. 由Miscrosoft开发并维护

这门语言本身的代码实现质量非常高,并且不会毫无预兆地放弃支持。TypeScript构建在世界上最好的编程语言专家所提供的作品之上。
不仅如此包括Dojo2、Angular2等都采用TypeScirpt作为其强烈推荐的第一语言。

1.6. 他是开源的

我们可以公开自由的通过社区来提出建议特性并贡献代码,而且我们可以更容易的开发第三方扩展和工具,从而更好的扩展这门语言的使用范围。

1.7. 提供更好的兼容性

我们可以将编写好的TypeScript编译成可读的JavaScript代码,编译时,可以指定目标ECMAScript版本,一旦编译完成,所有类型注解都会被删除。
ES5的浏览器支持:
一般来说,除了针对个别特性的特殊说明,各大主流浏览器都支持es5,包括

  • Chrome 13+
  • Firefox 4+
  • Safari 5.1*
    Safari 5.1不支持 Function.prototype.bind。
  • IE 9*
    其中IE9不支持es的严格模式,从IE10开始支持。

下面将介绍的tsc,默认将ts编译为ES3标准的脚本(IE8支持),不过如果使用某些特殊语法,比如getset存取器时,因为需要使用到Object.defineProperty(),就只支持编译为ES5了,否则会报错如下:

sample-classes.ts(4,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
2. 基于npm安装TypeScript

需要npm3.0.0以上版本,通过如下命令检查:

npm -v
3.10.10

安装TypeScript

npm intall -g typescript

安装完成后,可以通过如下命令确定TypeScript的版本:

tsc -v
Version 2.2.2
3. 运行第一个TypeScript程序

hello-world.ts

console.log('Hello World!');

3.1. 编译ts为js

使用如下命令将ts文件编译为js

tsc hello-world.ts

在ts文件同目录下回生成一个编译好的js文件hello-world.js

3.2. 通过nodejs进行测试运行

node hello-world.js
Hello World!

3.3. 使用ts-node模块组合编译运行

如果想组合编译和运行的命令,可以使用ts-node进行,安装和使用如下:
安装:

npm install -g ts-node

编译运行

ts-node hello-world.ts

3.4. 编译为特定的版本

上面也提到了tsc默认编译为ES3标准的脚本,如果想编译为更高版本,则需要特殊指定:

tsc sample-classes.ts --target ES5
附录一. ECMAScript标准演进

附录信息引用自
JavaScript 有着很奇怪的命名史。
1995 年,它作为网景浏览器(Netscape Navigator)的一部分首次发布,网景给这个新语言命名为 LiveScript。一年后,为了搭上当时媒体热炒 Java 的顺风车,临时改名为了 JavaScript(当然,Java 和 JavaScript 的关系,就和雷锋和雷锋塔一样 —— 并没有什么关系)

1996 年,网景将 JavaScript 提交给ECMA International(欧洲计算机制造商协会)进行标准化,并最终确定出新的语言标准,它就是 ECMAScript。自此,ECMAScript成为所有 JavaScript 实现的基础,不过,由于 JavaScript 名字的历史原因和市场原因(很显然 ECMAScript 这个名字并不令人喜欢……),现实中我们只用 ECMAScript 称呼标准,平时都还是使用 JavaScript 来称呼这个语言。

其实在第一版的 ECMAScript 发布后,很快又跟进发布了两个版本,但是自从 1999 年 ECMAScript 3 发布后,十年内都没有任何改动被成功添加到官方规范里。取而代之的,是各大浏览器厂商们争先进行自己的语言拓展,web 开发者们别无选择只能去尝试并且支持这些 API。即使是在 2009 年 ECMAScript 5 发布之后,仍然用了数年这些新规范才得到了浏览器的广泛支持,可是大部分开发者还是写着 ECMAScript 3 风格的代码,并不觉得有必要去了解这些规范。

一直到2012年,
事情突然开始有了转变。大家开始推动停止对旧版本 IE 浏览器的支持,用 ECMAScript 5 (ES5) 风格来编写代码也变得更加可行。与此同时,一个新的 ECMAScript 规范也开始启动。到了这时,大家开始逐渐习惯以对 ECMAScript 规范的版本支持程度来形容各种 JavaScript 实现。在正式被指名为 ECMAScript 第 6 版 (ES6) 之前,这个新的标准原本被称为 ES.Harmony(和谐)。2015 年,负责制定 ECMAScript 规范草案的委员会 TC39 决定将定义新标准的制度改为一年一次,这意味着每个新特性一旦被批准就可以添加,而不像以往一样,规范只有在整个草案完成,所有特性都没问题后才能被定稿。因此,ECMAScript 第 6 版在六月份公布之前,又被重命名为了 ECMAScript 2015(ES2015)

目前,ES2016中有添加了很多新的 JavaScript 特性或语法,包括decorators(装饰者),async-await(async-await 异步编程模型)和static class properties(静态类属性)。它们通常被称为 ES7,ES2016 或者 ES.Next 的特性,TC39 把一个提案分为 4 个阶段,你可以在Babel 的官网上查看各个提案目前都在哪个阶段了。

所以,我们该如何使用这一大堆术语呢?下面的列表或许能帮助到你:

  • ECMAScript:一个由 ECMA International 进行标准化,TC39 委员会进行监督的语言。通常用于指代标准本身。
  • JavaScript:ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范,并且可能被用于任何不同程度的任意版本的 ECMAScript 的实现。
  • ECMAScript 5 (ES5):ECMAScript 的第五版修订,于 2009 年完成标准化。这个规范在所有现代浏览器中都相当完全的实现了。
  • ECMAScript 6 (ES6) / ECMAScript 2015 (ES2015):ECMAScript 的第六版修订,于 2015 年完成标准化。这个标准被部分实现于大部分现代浏览器。可以查阅这张兼容性表来查看不同浏览器和工具的实现情况。
  • ECMAScript 2016:预计的第七版 ECMAScript 修订,2016夏季发布。
  • ECMAScript Proposals:被考虑加入未来版本 ECMAScript 标准的特性与语法提案,他们需要经历五个阶段:Strawman(稻草人),Proposal(提议),Draft(草案),Candidate(候选)以及 Finished (完成)。

免责声明:文章转载自《001.TypeScript简介.md》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇redhat 7安装oracle 11gr2VBA二次学习笔记(2)——两个Excel表内容比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

cocos2dx-3.x 导出自定义类到 lua 过程详解

转载请注明出处:http://www.cnblogs.com/Ray1024 一、简介 最近正在学习cocos2d中的lua游戏开发,因为lua开发的热更新特性,大家开发游戏好像都会优先选择lua作为开发语言。 但是遇到一个问题,用lua写一些简单的程序没什么问题,但是一旦需要一个复杂的类,在lua中直接写就感觉有些吃力。所以想到,可以把游戏开发中比较复杂...

C# 关键字extern用法

修饰符用于声明在外部实现的方法。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static,如下面的示例所示:[DllImport("avifil32.dll")]private static extern void AVIFileInit();注意ext...

pcre 使用

1、主页地址:http://www.pcre.org/下载pcre-7.8.tar.bz22、解压缩:tar xjpf pcre-7.8.tar.bz23、配置:cd pcre-7.8./configure --prefix=/usr/local/pcre-7.8 --libdir=/usr/local/lib/pcre --includedir=/usr...

在Azure DevOps Server (TFS)的流水线中编译和测试Xcode移动应用(iPhone)

概述 Xcode是开发基于苹果macOS系统的桌面应用和移动应用的主要IDE工具。使用Azure DevOps Server (原名TFS)系统中的pipelines流水线功能,可以方便的集成Xcode项目,使用web浏览器在DevOps服务器上,实现一键编译、测试和发布等工作,省却测试发布过程中复杂的流程,大幅提高测试发布的效率,提高开发和测试团队之间的...

python基础之读取xml

python怎么操作xml文件详细介绍链接:https://www.jb51.net/article/50812.htm 从结构上来说,xml很像常见的HTML超文本标记语言。不过超文本语言被设计用来显示数据,其焦点是数据的外观。xml被设计用来传输和存储数据,其焦点是数据的内容。 特征: 1. 标签对组成:<TEST></TEST>...

Ajax基本知识点(学习笔记)

      Ajax出来已经很久了,也已经出现了很多的快速开发Ajax网站的Ajax框架,项目中也多次运用了Ajax,但都没有系统的归纳出来了。这里就把相关知识点整理出来,不但便于学习,也便于以后再项目中方面查找。(本文不牵涉Ajax实现细节)    一、Ajax是什么?        Ajax(asynchronous Javascript and X...