数组

定义数组有两种方式。
第一种:普通方式。
可以在元素类型后面接上 [],表示由此类型元素组成的一个数组,数组的项中不允许出现其他的类型:

  1. //数组表现方式 类型[]
  2. let arr: number[] = [1, 2, 3, 4];

第二种:泛型方式 Array<元素类型>

  1. let list: Array<number> = [1, 2, 3];

元祖

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

  1. let x: [string, number];
  2. x = ["Hello", 10];

枚举

使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript 支持数字的和基于字符串的枚举。

  1. // 利用 const 关键词也可以声明一组常量,例如,声明十二生肖的排位
  2. const rat: number = 1;
  3. const cattle: number = 2;
  4. const tiger: number = 3;
  5. const rabbit: number = 4;
  6. const dragon: number = 5;

上述只声明了 5 个,如果声明全排位,需要声明 12 个变量,并且注明类型,但是却多了很多重复性工作,利用数字枚举,我们可以轻松声明同样的一组常量。
数字枚举
默认情况下,从 0 开始为元素编号。 你也可以手动的指定成员的数值。

  1. enum ChineseZodiac {
  2. rat,
  3. cattle,
  4. tiger,
  5. rabbit,
  6. dragon,
  7. }

字符串枚举
在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

  1. enum Person {
  2. name = "NAME",
  3. age = "AGE",
  4. love = "LOVE",
  5. hobby = "HOBBY",
  6. }
  7. console.log(Person.name); // NAME
  8. console.log(Person.hobby); // HOBBY

never

never 类型是任何类型的子类型,也可以赋值给任何类型,一般作为函数返回值。

  1. // 返回never的函数必须存在无法达到的终点
  2. function error(message: string): never {
  3. throw new Error(message);
  4. }

void

void 类型像是与 any 类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void。

  1. function warn(): void {
  2. console.log("This is my warning message");
  3. }

any 任意类型

任意值(Any)用来表示允许赋值为任意类型。声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型。

  1. let notSure: any = 4;
  2. notSure = "这是字符串";
  3. notSure = false;

当你不希望类型检查器对某些值进行检查而是直接让它们通过编译阶段的检查可以使用 any 类型来标记这些变量。

联合类型

联合类型(Union Types)表示取值可以为多种类型中的一种。

  1. let num: string | number;
  2. num = "seven";
  3. num = 7;

联合类型使用 | 分隔每个类型。这里的 let num: string | number 的含义是,允许 num 的类型是 string 或者 number,但是不能是其他类型。

对象类型

object 表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 之外的类型。

  1. declare function create(o: object | null): void;
  2. create({ name: 0 }); // OK
  3. create(null); // OK
  4. create(2); // Error
  5. create("字符串"); // Error
  6. create(false); // Error
  7. create(undefined); // Error