001.TypeScript简介.md
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支持),不过如果使用某些特殊语法,比如get
、set
存取器时,因为需要使用到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的更多相关文章
- RV ItemDecoration 分割线 简介 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- AS 功能 设置 SDK AVD 简介 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Learining TypeScript (一) TypeScript 简介
Learining TypeScript (一) TypeScript 简介 一.TypeScript出现的背景 2 二.TypeScript的架构 2 1. 设计目标 2 2 ...
- 转载:TypeScript 简介与《TypeScript 中文入门教程》
简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...
- 1 TypeScript 简介与安装
简介: TypeScript 是一种由微软开发维护的自由和开源的编程语言,它是JavaScript的一个超集,支持可选的类型检查,扩展了JavaScript的语法,支持JavaScript的所有语法和 ...
- typescript简介
微软作为编译器狂魔一直有一个心病,就是改良JavaScript这种语法超级烂又很多人用的编程语言,于是TypeScript诞生了 先做个对比吧: TS JS 语法严谨性 严谨 宽松 静态性 静态 ...
- 001. Ansible简介
一 简介 Ansible是一款极其简单的自动化运维工具, 基于Python开发, 集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点. 实现了批量系统 ...
- 001.Ceph简介概述
一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...
- 001.Redis简介及安装
一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key-value 缓存产品有以下三个特点: ...
随机推荐
- VS2008执行MFC程序,提示microsoft incremental linker已停止工作解决方法
事实上这边是由于设置有问题.详细的解决方式例如以下: 第一步:点击项目->"你的文件"属性->配置属性->链接器->启用增量链接 将 是(/INCRE ...
- awk双文件互相匹配查找
awk双文件互相匹配查找 要求: 文件a: 10/05766798607,11/20050325191329,29/0.1,14/05766798607 10/05767158557,11/200 ...
- 超便携式截屏录屏软件FastStone Capture
超便携式截屏录屏软件FastStone Capture
- hiho 1613 - 墨水滴 - bfs+优先队列 *
题目链接 小Ho有一张白纸,上面有NxN个格子.小Ho可以选择一个格子(X, Y),在上面滴一滴墨水.如果这滴墨水的颜色深度是G,那么这个格子也会被染成深度为G的格子.同时周围的格子也会被这滴墨水浸染 ...
- Eclipse schema xml提示
步骤一:确定xsd文件位置 spring-framework-3.2.0.RELEASE\schema\beans 步骤二:复制路径 步骤三:搜索“xml catalog” 步骤四:添加约束提示 ...
- SpringCloud学习笔记(15)----Spring Cloud Netflix之Hystrix Dashboard的使用
1. 引入依赖 在前面几节中的消费者中添加pom依赖. <dependency> <groupId>org.springframework.cloud</groupId& ...
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(三)配置故障转移
0 引言 主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的. 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server20 ...
- (noip模拟二十一)【BZOJ2500】幸福的道路-树形DP+单调队列
Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. ...
- linux 连接 NAS
[root@kvm-server ~]# mount -o username=user01,password=1234567890 //192.168.31.20/share /mnt/nas Cou ...
- linux在线添加硬盘、扫盘
1:查看scsi 硬盘设备[root@web02 ~]# ls /sys/class/scsi_host host0 host1 host2 2:检查本机现有硬盘 [root@web02 ~]# fd ...