1.1 基础类型

TypeScript的原始类型(primitive types)有数值型(number)、布尔型(boolean)、字符型(string)、符号型(symbol)、void型、null型、undefined型和用户自定义的枚举类型8种。

1.1.1、数值型

  1. let num1: number = 2;

变量声明数值类型后,不允许将字符类型或布尔类型等不兼容类型赋值给此变量。

1.1.2、布尔型

  1. let isMan:boolean = true;

在typescript中,Number、String和Boolean分别是number、string和boolean的封装对象。

  1. let a:boolean = new Boolean(1); //错误
  2. let b:boolean = Boolean(1); //正确

boolean类型和new Boolean()是不兼容的,但和Boolean()是兼容的。

1.1.3、字符型

  1. let msg:string = "Hello World!";

1.1.4 枚举

枚举类型是对JavaScript标准数据类型的一个补充,用于取值在一定范围内的场景。可以提升代码的可读性,枚举使用enum关键字来定义。

  1. enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
  2. let today:Days = Days.Sun;

枚举类型的变量实质上只是数值,但也可以对枚举值到枚举名进行反向映射。

  1. enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
  2. console.log(Days["Sun"] === 0); // true
  3. console.log(Days[2] === "Tue"); // true

枚举常用在下拉框的数据匹配上,label和value值映射。

1.1.5 Symbols

ES6引入的一种新的原始数据类型Symbols,表示独一无二的值,一旦创建就不能更改,且不能设置属性,所以一般作为对象的一个属性。

  1. let sym = Symbol("name");
  2. let sym2 = Symbol("name");
  3. let obj = {
  4. [sym]: "value",
  5. [sym2]: "value2",
  6. name: "value3"
  7. };
  8. console.log(obj);

1.1.6 void

空值(void)表示不返回任何值,一般在函数返回类型上使用,表示没有返回值的函数。

1.1.7 null

null表示不存在对象值,可以用来定义原始数据类型,也可以是值。

1.1.8 undefined

undefined表示变量已经声明但尚未初始化变量的值。undefined和null是所有类型的子类型,即可以赋值给所有类型的变量。它也可以是类型或者是值。

1.2 交叉类型和联合类型

交叉类型,用 & 符号连接,合并后的交叉类型包含所有类型的特性。
联合类型(union types)表示取值可以为多种中的一种,用 | 符号连接。

1.3 数组、元组

1.3.1 数组

typescript中的数组和JavaScript中一致,在此不再赘述。
有两个值得关注的知识点,其一,数组的遍历方式:
1、利用for循环遍历,是通过length属性循环下标来遍历数组的。
2、利用for…in遍历,通过获取属性遍历数组,通常也用于遍历对象的属性。

  1. let a = [1, 2, 3];
  2. for (let i in a) {
  3. console.log(a[i]); // 1 2 3
  4. }

3、利用for…of遍历,直接获取数组中的元素值,推荐的遍历数组和对象的方式。

  1. let arrs = ["a", "b", "c"];
  2. for (let i of arrs) {
  3. console.log(i); // a b c
  4. }

1.3.2 元组

数组合并相同类型的对象(一般,any[]类型的数组可以不同),元组合并不同类型的对象。元组类似关系数据表中的行,列是属性,详见第四章。

  1. let row: [number, string, number] = [1, "abc", 2];

元组声明的时候[]中的类型不能省略,且初始化的个数必须和声明中的类型个数一致,注意是初始化,后期更改可以不一致。

1.3.3 数组(元组)解构

解构是对结构进行分解,ES6允许按照一定的模式从数组和对象中提取值,并将提取的值赋给变量,称为解构。
通常用于变量的批量赋值

  1. // 传统方式
  2. let a = 1;
  3. let b = 2;
  4. let c = 3;
  5. // 解构方式
  6. let [a, b, c] = [1, 2, 3];