# 数组类型

原文地址 (opens new window)

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

# TypeScript 中的数组类型介绍

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

let arrayName: type[];
1

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

let skills: string[];
1

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

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

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

skills.push('Software Design');
1

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

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

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

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

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

skills.push(100);
1

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

错误提示:

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

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

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

输出:

string
1

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

# TypeScript 中的数组的属性和方法

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

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

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

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

输出:

[ 2, 4, 6 ]
1

# 存储混合类型的值

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

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

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

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

# 小结

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