Skip to content

TypeScript 数组

数组(Array)是一种特殊类型的对象,用于存储值的有序集合。在 TypeScript 中,你可以定义包含特定类型元素的数组,从而获得类型安全的好处。

创建数组

有两种主要的方式来声明一个数组:

  1. 类型 + 方括号 []: 这是最常用的方式。

    typescript
    let numbers: number[] = [10, 20, 30, 40];
    let fruits: string[] = ["Apple", "Orange", "Banana"];
  2. 泛型数组类型 Array<Type>: 使用泛型语法。

    typescript
    let numbers: Array<number> = [10, 20, 30, 40];
    let fruits: Array<string> = ["Apple", "Orange", "Banana"];

两种方式是等价的,选择哪一种取决于个人或团队的编码风格偏好。

访问数组元素

你可以通过索引(从 0 开始)来访问数组中的元素。

typescript
let fruits: string[] = ["Apple", "Orange", "Banana"];

console.log(fruits[0]); // "Apple"
console.log(fruits[1]); // "Orange"

// 修改元素
fruits[2] = "Mango";
console.log(fruits); // ["Apple", "Orange", "Mango"]

由于有类型检查,你不能将一个错误类型的值赋给数组元素:

typescript
// fruits[0] = 123; // Error: Type 'number' is not assignable to type 'string'.

数组的属性和常用方法

TypeScript 数组拥有和 JavaScript 数组相同的属性和方法。

length 属性

返回数组中元素的数量。

typescript
console.log(fruits.length); // 3

修改数组的方法

  • push(...items): 在数组末尾添加一个或多个元素,并返回新的长度。

    typescript
    fruits.push("Pineapple");
    console.log(fruits); // ["Apple", "Orange", "Mango", "Pineapple"]
  • pop(): 删除并返回数组的最后一个元素。

    typescript
    let lastFruit = fruits.pop();
    console.log(lastFruit); // "Pineapple"
    console.log(fruits); // ["Apple", "Orange", "Mango"]
  • shift(): 删除并返回数组的第一个元素。

    typescript
    let firstFruit = fruits.shift();
    console.log(firstFruit); // "Apple"
    console.log(fruits); // ["Orange", "Mango"]
  • unshift(...items): 在数组开头添加一个或多个元素,并返回新的长度。

    typescript
    fruits.unshift("Strawberry", "Grape");
    console.log(fruits); // ["Strawberry", "Grape", "Orange", "Mango"]
  • splice(start, deleteCount, ...items): 在任意位置添加/删除元素。

    typescript
    // 从索引 1 开始,删除 2 个元素,并插入 "Kiwi"
    fruits.splice(1, 2, "Kiwi");
    console.log(fruits); // ["Strawberry", "Kiwi", "Mango"]

遍历数组的方法

  • forEach(callback): 对数组中的每个元素执行一次提供的函数。

    typescript
    fruits.forEach((fruit, index) => {
        console.log(`Index ${index}: ${fruit}`);
    });
  • map(callback): 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

    typescript
    let upperFruits = fruits.map(fruit => fruit.toUpperCase());
    console.log(upperFruits); // ["STRAWBERRY", "KIWI", "MANGO"]
  • filter(callback): 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

    typescript
    let longFruits = fruits.filter(fruit => fruit.length > 5);
    console.log(longFruits); // ["Strawberry"]

多维数组

你也可以创建多维数组(数组的数组)。

typescript
let matrix: number[][] = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

console.log(matrix[1][1]); // 5

本站内容仅供学习和研究使用。