title: 数组类型

数组类型

原文地址

在本教程中,你将学习 TypeScript 中的数组类型,以及它的一些基本操作。

TypeScript 中的数组类型介绍

TypeScript 中的 array 是一个有序的数据列表,可以使用下面的语法来声明一个存储指定类型的值的数组:

  1. let arrayName: type[];

如下所示,声明了一个 字符串 数组:

  1. let skills: string[];

你可以通过下面的方式往数组中添加一个或多个字符串:

  1. skills[0] = 'Problem Solving';
  2. skills[1] = 'Programming';

也可以使用 push() 方法往数组中添加元素:

  1. skills.push('Software Design');

下面的例子中,声明并把一个字符串数组赋值给了 skills 变量:

  1. let skills = ['Problem Sovling', 'Software Design', 'Programming'];

在这个例子中,TypeScript 推断 skills 数组是一个字符串数组,它相当于:

  1. let skills: string[];
  2. skills = ['Problem Sovling', 'Software Design', 'Programming'];

当给数组指定了类型,TypeScript 会阻止你向数组中添加不兼容的值,下面的例子会抛出一个错误提示:

  1. skills.push(100);

因为我们尝试往字符串数组中添加一个数值。

错误提示:

  1. Argument of type 'number' is not assignable to parameter of type 'string'.

当从一个数组中提取元素的时候,TypeScript 会执行 类型推断 的操作,如下所示:

  1. let skill = skills[0];
  2. console.log(typeof skill);

输出:

  1. string

这个例子中,提取了 skills 数组中的第一个元素,把它赋值给了 skill 变量,由于字符串数组中的元素都是字符串,TypeScript 把 skill 变量的类型推断为字符串类型。

TypeScript 中的数组的属性和方法

TypeScript 中的数组和 JavaScript 一样,可以访问 JavaScript 数组中的所有属性和方法,比如下面使用 length 属性来获取数组中元素的数量:

  1. let series = [1, 2, 3];
  2. console.log(series.length); // 3

也可以使用 JavaScript 中的数组的所有方法,比如 forEach(), map(), reduce()filter(),如下所示:

  1. let series = [1, 2, 3];
  2. let doubleIt = series.map((e) => e * 2);
  3. console.log(doubleIt);

输出:

  1. [ 2, 4, 6 ]

存储混合类型的值

下面演示了如何声明一个同时存储字符串和数字的数组:

  1. let scores = ['Programming', 5, 'Software Design', 4];

在这个例子中,TypeScript 把 scores 数组推断为 (string | number)[] 类型,它和下面的例子是等价的:

  1. let scores: (string | number)[];
  2. scores = ['Programming', 5, 'Software Design', 4];

小结

  • 在 TypeScript 中,数组是一个有序的数据列表,数组可以存储混合类型的值;
  • 声明指定类型的数组,你可以使用 let arr: type[] 这个语法。