- 原文地址:TypeScript — JavaScript with superpowers
- 原文做者:Indrek Lasn
- 译者:liaozeen
JavaScript 很酷。可是你知道比JavaScript更酷的是什么吗?javascript
是Typescript。html
你能说出下面代码哪里出错了吗?java
TypeScript (左) and ES6 (右)git
看到红色下划线了吗?这是Typescript给咱们的错误提示。github
你可能找到这个错误了—— toUpperCase()
是 字符串类型的方法。咱们把一个整数做为参数传入,不过整数不能调用 toUpperCase()
。typescript
咱们来修改它,限制 nameToUpperCase()
的参数为字符串类型。json
如今咱们没必要记住 nameToUpperCase()
只能接受一个字符串做为参数,让Typescript帮咱们来记住它。想象下,若是要记住成千上万个方法以及其参数的类型,那会疯掉的。数组
可是仍是出现红色提示。这是为何?由于咱们传的仍是一个数字!咱们如今来传个字符串。浏览器
注意到Typescript会编译成JavaScript(它只是JavaScript的超集,像C++和C)bash
Typescript的静态类型检查简单而强大。
在上个月,TypeScript已经下载了10,327,953次。
Typescript与Flow的下载量比较
让咱们来探索Typescript世界——咱们稍后会深刻探讨,首先明白Typescript是什么以及为何存在。
TypeScript于2012年10月1日首次亮相。 它起源于微软,由 Anders Hejlsber(领导设计C#)和他的团队开发。
Typescript彻底公开在Github上,因此任何人均可以阅读源代码和贡献。
Typescript——JavaScript的超集
很简单,咱们须要的是NPM包。打开你的终端,而后跟着如下输入:
咱们应该作好Typescript的配置。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}
复制代码
咱们须要作的是建立.ts
文件,并告诉Typescript监测代码的变化,并进行编译。
执行如下命令进行代码监测:
tsc -w
复制代码
tsc—Typescript的编译指令
这就是咱们最终生成的文件
如今你能够按照咱们的例子来完成!
咱们在.ts
文件里写代码,.js
文件是给浏览器读取的。在本文的例子中,咱们没有用浏览器,而是使用Node.js(Node也能读.js
)
JavaScript有七种数据类型,其中六种是基础类型,剩下的一种是对象类型。
JavaScript 的基础类型有:
剩下的是对象类型
Typescript除了和JavaScript同样有基础类型,也扩充了额外的类型。
这些额外的类型是可选的,若是你不熟悉,你不必定要使用。
额外的类型以下:
能够把 tuple 想象为有结构的数组。你按顺序预先定义数组元素的类型。
若是咱们不按 tuple 的相应位置的类型分配相应的类型,Typescript会提示咱们规则错误。
tuple
指望第一个变量是 number
类型—在这里例子中,它不是数字类型,而是字符串 "Indrek"
,因此会提示咱们错误。
在typescript里,你必须在函数里定义返回类型。像这样:有些函数没有 return语句
注意咱们如何声明参数类型和返回类型 - 二者都是字符串。
如今看看若是咱们不返回任何东西会发生什么?
能够看到Typescript编译程序告诉咱们:"你定义了返回类型为字符串,但如今却没有返回任何东西。如今告诉你,咱们没有遵照提示的规则。"
若是咱们不知道须要返回什么时怎么办?这种状况咱们能够使用 Void
定义返回类型。
可是在这个例子里,若是咱们要返回一个值,咱们就不能定义返回类型为 void
。
any
类型很是简单。若是咱们不知道是什么类型时能够使用 any
。
注意到咱们屡次给 person
从新分配不一样类型的值。第一次是字符串,而后是数字,最后是布尔值。咱们不肯定其类型。
现实世界的例子是,若是你使用第三方库而你不知道类型。
咱们来建立一个数组,把一些数据存储在数组里。数组是由不一样类型的数据组成,不单单是字符串,或数字,又或者有结构的类型,像 tuple
。any
类型就会起做用。
若是你的数组里只是一种类型,你能够明确告诉编译器,像这样:
若是你想了解更多,这里有文档介绍。