【译】TypeScript 的类型(一)

JavaScript 很酷。可是你知道比JavaScript更酷的是什么吗?javascript

是Typescript。html

你能说出下面代码哪里出错了吗?java

img

img

TypeScript (左) and ES6 (右)git

看到红色下划线了吗?这是Typescript给咱们的错误提示。github

你可能找到这个错误了—— toUpperCase() 是 字符串类型的方法。咱们把一个整数做为参数传入,不过整数不能调用 toUpperCase()typescript

咱们来修改它,限制 nameToUpperCase() 的参数为字符串类型。json

如今咱们没必要记住 nameToUpperCase() 只能接受一个字符串做为参数,让Typescript帮咱们来记住它。想象下,若是要记住成千上万个方法以及其参数的类型,那会疯掉的。数组

可是仍是出现红色提示。这是为何?由于咱们传的仍是一个数字!咱们如今来传个字符串。浏览器

注意到Typescript会编译成JavaScript(它只是JavaScript的超集,像C++和C)bash

Typescript的静态类型检查简单而强大。

在上个月,TypeScript已经下载了10,327,953次。

1*12nXNNgYHMLqWl7FWe4mwQ

Typescript与Flow的下载量比较

让咱们来探索Typescript世界——咱们稍后会深刻探讨,首先明白Typescript是什么以及为何存在。

TypeScript于2012年10月1日首次亮相。 它起源于微软,由 Anders Hejlsber(领导设计C#)和他的团队开发。

Typescript彻底公开在Github上,因此任何人均可以阅读源代码和贡献。

Typescript——JavaScript的超集

怎么开始

很简单,咱们须要的是NPM包。打开你的终端,而后跟着如下输入:

咱们应该作好Typescript的配置。

img

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs"
    }
}
复制代码

咱们须要作的是建立.ts 文件,并告诉Typescript监测代码的变化,并进行编译。

执行如下命令进行代码监测:

tsc -w
复制代码

tsc—Typescript的编译指令

这就是咱们最终生成的文件

img

如今你能够按照咱们的例子来完成!

咱们在.ts文件里写代码,.js文件是给浏览器读取的。在本文的例子中,咱们没有用浏览器,而是使用Node.js(Node也能读.js

img

JavaScript有七种数据类型,其中六种是基础类型,剩下的一种是对象类型。

JavaScript 的基础类型有:

  • String
  • Number
  • Undefined
  • Null
  • Symbol
  • Bollean

剩下的是对象类型

img

Typescript除了和JavaScript同样有基础类型,也扩充了额外的类型。

这些额外的类型是可选的,若是你不熟悉,你不必定要使用。

额外的类型以下:

Tuple

img

能够把 tuple 想象为有结构的数组。你按顺序预先定义数组元素的类型。

若是咱们不按 tuple 的相应位置的类型分配相应的类型,Typescript会提示咱们规则错误。

void

tuple 指望第一个变量是 number 类型—在这里例子中,它不是数字类型,而是字符串 "Indrek" ,因此会提示咱们错误。

在typescript里,你必须在函数里定义返回类型。像这样:有些函数没有 return语句

img

注意咱们如何声明参数类型和返回类型 - 二者都是字符串。

如今看看若是咱们不返回任何东西会发生什么?

能够看到Typescript编译程序告诉咱们:"你定义了返回类型为字符串,但如今却没有返回任何东西。如今告诉你,咱们没有遵照提示的规则。"

若是咱们不知道须要返回什么时怎么办?这种状况咱们能够使用 Void 定义返回类型。

img

可是在这个例子里,若是咱们要返回一个值,咱们就不能定义返回类型为 void

Any

img

any 类型很是简单。若是咱们不知道是什么类型时能够使用 any

img

注意到咱们屡次给 person 从新分配不一样类型的值。第一次是字符串,而后是数字,最后是布尔值。咱们不肯定其类型。

现实世界的例子是,若是你使用第三方库而你不知道类型。

咱们来建立一个数组,把一些数据存储在数组里。数组是由不一样类型的数据组成,不单单是字符串,或数字,又或者有结构的类型,像 tupleany类型就会起做用。

img

若是你的数组里只是一种类型,你能够明确告诉编译器,像这样:

img

若是你想了解更多,这里有文档介绍。

中文文档:www.tslang.cn/docs/handbo…

英文文档:www.typescriptlang.org/docs/handbo…

相关文章
相关标签/搜索