三、TypeScript 变量类型
变量类型
TypeScript最大的一个特点就是变量是强类型的,也就是说,在声明变量的时候,我们必须给他一个类型。
TypeScript中的数据类型有:
Undefined : undefined
Number:数值类型;
string : 字符串类型;
Boolean: 布尔类型;
enum:枚举类型;
any : 任意类型,一个牛X的类型;
void:空类型;
Array : 数组类型;
Tuple : 元组类型;
Null : null 。
Undefined 类型:
在js中定义了一个变量,但没有给他赋予任何值的时候,它就是Undefined类型。

如果将该变量定义为 Undefined 类型,并给该变量赋值,ts文件将发出警告,但不影响js编译,同时数据类型变更为值的类型

Number类型
在TypeScript中,所有的数字都是Number类型,不分是整数还是小数。

在TypeScrip中有几种特殊的Number类型 我们需要额外注意:
1、NaN:它是Not a Number 的简写,意思就是不是一个数值。如果一个计算结果或者函数的返回值本应该是数值,但是由于种种原因,他不是数字。出现这种状况不会报错,而是把它的结果看成了NaN。
2、Infinity :正无穷大。
3、-Infinity :负无穷大。
String类型
和JavaScript一样,可以使用双引号( ")或单引号(')表示字符串。

还可以使用模版字符串,它可以定义多行文本和内嵌表达式。 这种字符串是被反引号包围( `),并且以${ expr }这种形式嵌入表达式

Boolean布尔类型
任何业务逻辑判断都要有布尔类型的参与,通过对与错的判断是最直观的逻辑处理。boolean类型只有两种值,true和false。

enmu 类型
enum类型是对JavaScript标准数据类型的一个补充。
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。
枚举类型和对象类型相似。

any类型
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:

void:空类型:
某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。
当一个函数没有返回值时,你通常会见到其返回值类型是 void:

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null:

Array 数组类型:
TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。
第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:

第二种方式是使用数组泛型,Array<元素类型>:

Tuple : 元祖类型:
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
比如,你可以定义一对值分别为 string和number类型的元组。

当访问一个已知索引的元素,会得到正确的类型:

Null类型:
与 Undefined 类似,都代表空。Null 代表是引用类型为空。意义不大,但是有用。
任何业务逻辑判断都要有布尔类型的参与,通过对与错的判断是最直观的逻辑处理。boolean类型只有两种值,true和false。